๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1730)
< ํํ >
๋ฌธ์ ํ์ด
์ฃผ์ด์ง ๋ฐฉํฅ์ผ๋ก ์์ง์ด๋ฉด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ๋ฌด์ํ๋ค. ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๋๋ค๋ฉด ์์ง ๋ฐฉํฅ์ผ๋ก ์ง๋ฌ๋์ง, ์ํ ๋ฐฉํฅ์ผ๋ก ์ง๋ฌ๋์ง ํ์ธํ๋ฉฐ ๊ธฐ๋กํ๋ค.
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 _1730_ { // ํํ
static int x, y, n;
static char arr[][];
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
n = Integer.parseInt(bf.readLine());
arr = new char[n][n];
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
arr[i][j]='.';
}
}
String str = bf.readLine();
x = 0;
y = 0;
boolean flag;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == 'D') {
flag = DU(x + 1, y);
if (flag) {
x += 1;
}
} else if (c == 'R') {
flag = RL(x, y + 1);
if (flag) {
y += 1;
}
} else if (c == 'L') {
flag = RL(x, y - 1);
if (flag) {
y -= 1;
}
} else {
flag = DU(x - 1, y);
if (flag) {
x -= 1;
}
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
bw.write(arr[i][j]+"");
}
bw.write("\n");
}
bw.flush();
}
private static boolean DU(int a, int b) {
if (a >= 0 && a < n && b >= 0 && b < n) {
if (arr[x][y] == '-') {
arr[x][y] = '+';
} else if(arr[x][y] == '.'){
arr[x][y] = '|';
}
if (arr[a][b] == '-') {
arr[a][b] = '+';
} else if(arr[a][b] == '.'){
arr[a][b] = '|';
}
return true;
}
return false;
}
private static boolean RL(int a, int b) {
if (a >= 0 && a < n && b >= 0 && b < n) {
if (arr[x][y] == '|') {
arr[x][y] = '+';
} else if(arr[x][y] == '.'){
arr[x][y] = '-';
}
if (arr[a][b] == '|') {
arr[a][b] = '+';
} else if(arr[a][b]=='.'){
arr[a][b] = '-';
}
return true;
}
return false;
}
}
๋ณ์)
n : ๋ชฉํ์ ํฌ๊ธฐ
arr : ๋ชฉํ
str : ๋ก๋ดํ์ ์์ง์
x, y : ๋ก๋ด ์์น
flag : ์ด๋ ์ฌ๋ถ
๋ชฉํ์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๋ชฉํ์ '.'์ผ๋ก ์ด๊ธฐํํ๋ค. ๋ก๋ดํ์ ์์ง์์ ์ ๋ ฅ๋ฐ๋๋ค. ๋ก๋ดํ์ ์์ง์๋๋ก ์์ง์ธ๋ค.
1) D๋ผ๋ฉด DU ํจ์๋ฅผ ํธ์ถํ๋ค. true๋ฅผ ๋ฐํํ๋ฉด x+1์ ํ๋ค.
2) R๋ผ๋ฉด RL ํจ์๋ฅผ ํธ์ถํ๋ค. true๋ฅผ ๋ฐํํ๋ฉด y+1์ ํ๋ค.
3) L๋ผ๋ฉด RL ํจ์๋ฅผ ํธ์ถํ๋ค. true๋ฅผ ๋ฐํํ๋ฉด y-1์ ํ๋ค.
4) U๋ผ๋ฉด DUํจ์๋ฅผ ํธ์ถํ๋ค. true๋ฅผ ๋ฐํํ๋ฉด x-1์ ํ๋ค.
์ต์ข ๋ชฉํ์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
DU (int a, int b)
์ด๋ํ ์์น๊ฐ ๋ชฉํ ๋ฒ์ ์์ธ์ง ํ์ธํ๋ค. ๋ฒ์ ์์ด๋ผ๋ฉด ํ์ฌ ์์น ๊ฐ์ด '-'๋ผ๋ฉด '+'๋ก ์ ์ฅํ๊ณ '.'๋ผ๋ฉด '|'๋ก ์ ์ฅํ๋ค. ์๋๋ก ์ด๋ํ ์์น ๊ฐ์ด '-'๋ผ๋ฉด '+'๋ก ์ ์ฅํ๊ณ '.'๋ผ๋ฉด '|'๋ก ์ ์ฅํ๋ค. ๋ก๋ด์ด ์ด๋ํ ๊ฒ์ด๋ฏ๋ก true๋ฅผ ๋ฐํํ๋ค. ๋ง์ฝ ์ด๋ํ ์์น๊ฐ ๋ชฉํ ๋ฒ์ ์์ด ์๋๋ผ๋ฉด false๋ฅผ ๋ฐํํ๋ค.
RL (int a, int b)
์ด๋ํ ์์น๊ฐ ๋ชฉํ ๋ฒ์ ์์ธ์ง ํ์ธํ๋ค. ๋ฒ์ ์์ด๋ผ๋ฉด ํ์ฌ ์์น ๊ฐ์ด '|'๋ผ๋ฉด '+'๋ก ์ ์ฅํ๊ณ '.'๋ผ๋ฉด '-'๋ก ์ ์ฅํ๋ค. ์๋๋ก ์ด๋ํ ์์น ๊ฐ์ด '|'๋ผ๋ฉด '+'๋ก ์ ์ฅํ๊ณ '.'๋ผ๋ฉด '-'๋ก ์ ์ฅํ๋ค. ๋ก๋ด์ด ์ด๋ํ ๊ฒ์ด๋ฏ๋ก true๋ฅผ ๋ฐํํ๋ค. ๋ง์ฝ ์ด๋ํ ์์น๊ฐ ๋ชฉํ ๋ฒ์ ์์ด ์๋๋ผ๋ฉด false๋ฅผ ๋ฐํํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 9440_์ซ์ ๋ํ๊ธฐ (0) | 2024.03.29 |
---|---|
[Baekjoon] 2594_๋์ด๊ณต์ (0) | 2024.03.28 |
[Baekjoon] 2167_2์ฐจ์ ๋ฐฐ์ด์ ํฉ (0) | 2024.03.26 |
[Baekjoon] 27172_์ ๋๋๊ธฐ ๊ฒ์ (0) | 2024.03.25 |
[Baekjoon] 10434_ํ๋ณตํ ์์ (1) | 2024.03.22 |