๋ฌธ์ (์ถ์ฒ: 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๋ผ๋ฉด #์ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 3060_์์ฌ์์ด ๋ผ์ง (1) | 2024.04.10 |
---|---|
[Baekjoon] 28471_Wํค๊ฐ ๋น ์ง ์ฑ์์ด (0) | 2024.04.09 |
[Baekjoon] 21919_์์ ์ต์ ๊ณต๋ฐฐ์ (0) | 2024.04.04 |
[Baekjoon] 1835_์นด๋ (0) | 2024.04.03 |
[Baekjoon] 1531_ํฌ๋ช (0) | 2024.04.02 |