반응형
풀이
실버 4 문제지만, 그것보다는 조금 더 어려운 문제인거 같다.
처음 문제를 봤을 때 맵의 크기를 어떻게 정해주지 10분 정도 고민하다가
최대 맵 크기를 한정해주고,
명령에 따라서 도달한 전진한 위치는
1로 바꿔주었다.
x,y값들의 최대 최소 값을 구해서
범위 안에 1인 값은 "." , 0인 값은 "#"으로 StringBuilder에 넣어주었다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
// 북 동 남 서
static int[] dx = {-1,0,1,0};
static int[] dy = {0,1,0,-1};
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int[][] map = new int[101][101];
int x = 50;
int y = 50;
int maxX = 50;
int maxY = 50;
int minX = 50;
int minY = 50;
int dir = 2;
map[x][y] = 1;
String command = br.readLine();
// 1이 . 2이 #
for(int i = 0 ; i < N ; i++) {
char tmp = command.charAt(i);
if(tmp == 'L') {
dir -= 1;
if(dir == -1) dir = 3;
}
else if(tmp == 'R') {
dir = (dir + 1) % 4;
}
else if(tmp == 'F') {
x = x + dx[dir];
y = y + dy[dir];
maxX = Math.max(maxX, x);
maxY = Math.max(maxY, y);
minX = Math.min(minX, x);
minY = Math.min(minY, y);
map[x][y] = 1;
}
}
for(int i = minX ; i <= maxX ; i++) {
for(int j = minY ; j <= maxY ; j++) {
if(map[i][j] == 1) {
sb.append(".");
}else {
sb.append("#");
}
}
sb.append("\n");
}
System.out.println(sb);
}
}
반응형
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[Java/자바 백준 17822] 원판 돌리기 (0) | 2022.02.17 |
---|---|
[Java/자바 백준 17135] 캐슬 디펜스 (0) | 2022.02.15 |
[Java/자바 백준 17837] 새로운 게임 2 (0) | 2022.02.14 |
[Java/자바 프로그래머스] 방문길이 (0) | 2022.02.04 |
[Java/자바 백준 19237] 어른 상어 (0) | 2022.02.04 |