๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1347_๋ฏธ๋กœ ๋งŒ๋“ค๊ธฐ

๋ฟŒ์•ผ._. 2024. 4. 5. 22:25

Silver II

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/1347)

< ๋ฏธ๋กœ ๋งŒ๋“ค๊ธฐ >

 

๋ฌธ์ œ ํ’€์ด 

 

๋ฏธ๋กœ ์•ˆ ์ค‘์—์„œ ์–ด๋””์—์„œ ์‹œ์ž‘ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— 102x102 ์ค‘์—์„œ ์ค‘๊ฐ„์ธ [51,51]์—์„œ ์‹œ์ž‘ํ•œ๋‹ค. ์›€์ง์ž„์˜ ์ตœ๋Œ€ ๊ธธ์ด๊ฐ€ 50์ด๋ฏ€๋กœ F๊ฐ€ ์ตœ๋Œ€ 50๋ฒˆ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ „์ฒด ํฌ๊ธฐ๋ฅผ 102x102๋กœ ์ •ํ–ˆ๋‹ค. ๊ทธ ํ›„ ์›€์ง์ž„์— ๋งž๊ฒŒ ์ด๋™ํ•˜๋ฉด์„œ ๋ฏธ๋กœ์˜ ํฌ๊ธฐ๋„ ๊ฐ™์ด ๊ตฌํ•œ๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class _1347 { // ๋ฏธ๋กœ ๋งŒ๋“ค๊ธฐ

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int n = Integer.parseInt(bf.readLine());
		String str = bf.readLine();

		boolean arr[][] = new boolean[103][103];
		int x = 51, y = 51, minX = 51, minY = 51, maxX = 51, maxY = 51, dir = 2;
		arr[x][y]=true;
		int dx[] = { -1, 0, 1, 0 }; // ์ƒ์šฐํ•˜์ขŒ
		int dy[] = { 0, 1, 0, -1 };

		for (int i = 0; i < n; i++) {
			char c = str.charAt(i);

			if (c == 'R') {
				dir += 1;
				if (dir == 4) {
					dir = 0;
				}
			} else if (c == 'L') {
				dir -= 1;
				if (dir == -1) {
					dir = 3;
				}
			}
			if (c == 'F') {
				x += dx[dir];
				y += dy[dir];
				arr[x][y] = true;

				minX = Math.min(x, minX);
				minY = Math.min(y, minY);
				maxX = Math.max(x, maxX);
				maxY = Math.max(y, maxY);
			}
		}

		for (int i = minX; i <= maxX; i++) {
			for (int j = minY; j <= maxY; j++) {
				if (arr[i][j]) {
					bw.write(".");
				} else {
					bw.write("#");
				}
			}
			bw.write("\n");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ๋‚ด์šฉ์˜ ๊ธธ์ด
str : ์›€์ง์ž„
arr : ์ด๋™ ์—ฌ๋ถ€
x, y : ํ˜„์žฌ ์œ„์น˜
minX, minY, maxX, maxY : ์ด๋™ํ•œ ์œ„์น˜ ์ค‘ ์ตœ์†Œ ์œ„์น˜, ์ตœ๋Œ€ ์œ„์น˜
dx, dy : ์ƒ์šฐํ•˜์ขŒ
c : L, R, F

 

๋‚ด์šฉ์˜ ๊ธธ์ด์ธ n์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์›€์ง์ž„์ธ str์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ „์ฒด ํฌ๊ธฐ๋ฅผ 102x102๋กœ ์ •ํ•œ ํ›„ ์ค‘๊ฐ„์—์„œ ์‹œ์ž‘ํ•œ๋‹ค. ์›€์ง์ž„์„ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ฉด์„œ ๋‹ค์Œ ๊ณผ์ •์„ ์‹คํ–‰ํ•œ๋‹ค.

 

1) R์ด๋ผ๋ฉด dir์„ 1 ๋”ํ•œ๋‹ค. ๋งŒ์•ฝ dir์ด 4๋ผ๋ฉด 0์œผ๋กœ ์ €์žฅํ•œ๋‹ค.

2) L์ด๋ผ๋ฉด dir์„ 1 ๋บ€๋‹ค. ๋งŒ์•ฝ dir์ด -1์ด๋ผ๋ฉด 3์œผ๋กœ ์ €์žฅํ•œ๋‹ค.

3) F๋ผ๋ฉด ํ˜„์žฌ ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๊ณ  arr์˜ [x, y] ์œ„์น˜๋ฅผ true๋กœ ์ €์žฅํ•œ๋‹ค. ์ด๋™ํ•˜๋ฉด์„œ ์ตœ์†Œ ์œ„์น˜์™€ ์ตœ๋Œ€ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค.

 

์ตœ์†Œ ์œ„์น˜๋ถ€ํ„ฐ ์ตœ๋Œ€ ์œ„์น˜๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ arr ๊ฐ’์ด true๋ผ๋ฉด .์„ ์ถœ๋ ฅํ•˜๊ณ  false๋ผ๋ฉด #์„ ์ถœ๋ ฅํ•œ๋‹ค.