반응형
🔺 문제
1347번: 미로 만들기
홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍
www.acmicpc.net
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
import java.util.*;
import java.io.*;
public class Main{
static int[] dx = {0, 1, 0, -1}; // 남동북서 (0: 남, 1: 동, 2: 북, 3: 서)
static int[] dy = {-1, 0, 1, 0}; // 남동북서
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
char[] ch = br.readLine().toCharArray();
char[][] map = new char[101][101]; // 배열 크기 100으로 두기
for(int i = 0 ; i < 101 ; i++) {
for(int j = 0 ; j < 101 ; j++) {
map[i][j] = '#';
}
}
int startX, startY, minX, minY, maxX, maxY;
startX = startY = minX = minY = maxX = maxY = 50;
map[startY][startX] = '.'; // 중심점 기준 시작 (중심점 r : 50 / c : 50)
int dir = 2;
// map 채우기
for(int i = 0 ; i < ch.length ; i++) {
if(ch[i] == 'F') { // 전진
startX += dx[dir];
startY += dy[dir];
map[startY][startX] = '.';
maxX = Math.max(maxX, startX);
maxY = Math.max(maxY, startY);
minX = Math.min(minX, startX);
minY = Math.min(minY, startY);
}
else if(ch[i] == 'L') { // 왼쪽 회전
if(dir == 0) dir = 3; // 남쪽이면, 서쪽으로 회전
else dir--;
}
else if(ch[i] == 'R') { // 오른쪽 회전
if(dir == 3) dir = 0; // 서쪽이면, 남쪽으로 회전
else dir++;
}
}
// 출력하기
for(int i = minY ; i <= maxY ; i++) {
for(int j = minX ; j <= maxX ; j++) {
sb.append(map[i][j]);
}
sb.append("\n");
}
System.out.println(sb);
}
}
|
cs |
✅ 해결 아이디어
✔ 구현 & 시뮬레이션
- 현재 위치를 (50,50)으로 두고 시뮬레이션
🔺 다른 풀이들
- 다들 비슷하시다...
💬 느낀 점
왼쪽이랑 오른쪽 방향 회전을 어떻게 하지...?하다가
시간이 흘러버렸다,,,
근본 구현을 잘하자..!!😳😳
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
#백준_1347 미로 만들기 - Java 자바
# 유형 : 시뮬레이션, 구현 # 난이도 : 실버 4 # 문제를 처음에 보고 뭐지..했는데 배열의 크기를 최대 100으로 잡고 다 벽으로 채워놓은 다음 중심점을 기준으로 시작하여 F가 나올때마다 전진하고
ukyonge.tistory.com
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 2630번: 색종이 만들기 (0) | 2023.08.04 |
---|---|
[백준/JAVA] 3190번: 뱀 (0) | 2023.08.03 |
[백준/JAVA] 18406번: 럭키 스트레이트 (0) | 2023.08.03 |
[백준/JAVA] 1515번: 수 이어 쓰기 (0) | 2023.08.03 |
[백준/JAVA] 13305번: 주유소 (0) | 2023.08.02 |