문제
문제 바로가기 > BOJ 1347번: 미로 만들기
풀이
미로의 어느 지점에서 이동을 시작할지 모르기 때문에 maze 크기를 101로 잡아주었다.
시뮬레이션을 통해 방문한 곳은 true로 변경해주고, 이후 boundary를 찾아 미로를 출력해준다!
#include<iostream>
#define MAX 101
using namespace std;
struct HJ {int y=50, x=50, d=2;} hj; // 홍준
int moveCnt;
string content;
bool maze[MAX][MAX];
int dy[] = {-1, 0, 1, 0};
int dx[] = {0, 1, 0, -1};
void solution(){
cin >> moveCnt >> content;
maze[hj.y][hj.x] = true;
for(char c : content){
if(c == 'L'){
if(--hj.d < 0) hj.d = 3;
}
else if(c == 'R'){
if(++hj.d > 3) hj.d = 0;
}
else { // c == 'F'
hj.y += dy[hj.d];
hj.x += dx[hj.d];
maze[hj.y][hj.x] = true;
}
}
}
void output(){
// find boundary
int sy, sx, ey, ex;
sy = sx = MAX;
ey = ex = 0;
for (int y = 0; y < MAX; y++){
for (int x = 0; x < MAX; x++){
if(maze[y][x]){
if(y < sy) sy = y;
if(x < sx) sx = x;
if(y > ey) ey = y;
if(x > ex) ex = x;
}
}
}
// print maze
for (int y = sy; y <= ey; y++){
for (int x = sx; x <= ex; x++){
if(maze[y][x]) cout << ".";
else cout << "#";
} cout << "\n";
}
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
solution();
output();
}
'문제 풀이 > 백준' 카테고리의 다른 글
BOJ 2230번: 수 고르기 (0) | 2023.09.03 |
---|---|
BOJ 16928번: 뱀과 사다리 게임 (0) | 2023.08.29 |
BOJ 9207번: 페그 솔리테어 (1) | 2023.05.16 |
BOJ 11438번: LCA 2 (0) | 2023.04.20 |
BOJ 1799번: 비숍 (0) | 2023.04.06 |