코딩테스트/백준

[백준][Silver 2][python] 1347. 미로 만들기

코린영이 2024. 3. 31. 13:21
728x90
반응형

 

 

코딩테스트 문제 푸는 방향
1. 문제를 정독한다. 정독하면서 손으로 한 번 풀어본다.
2. 접근 방법을 구상한다.
3. 핵심 코드를 시각적으로 보이도록 손코딩한다. 
4. 코드를 구현한다. 
5. 디버깅 및 개선을 한다.
6. 부분 정답이 나올 시 1번으로 돌아가 더 꼼꼼하게 읽어보고 다른 접근 방법은 없는지 생각해본다. 

문제번호. 문제이름

https://www.acmicpc.net/problem/1347

 

1347번: 미로 만들기

홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍

www.acmicpc.net

 

홍준이가 이동한 경로를 보고 미로를 추측하는 문제이다.

 

 

 

[문제 해결 방향]

최대 50칸을 전진할 수 있으니까 미로 크기를 #가 채워진 상태로 최대 101 * 101으로 만들어준다.

그리고 시작 점은 (50, 50)으로 해준 다음 이동시작!

이동하면서 x의 최소 최대, y의 최소 최대를 확인해서 이동한 부분만 확인할 수 있도록 해준다.

 

제대로 설명을 한 건지는 모르겠지만 이제 코드를 봅시다

 

 

[파이썬 코드]

length = int(input())
move = list(input())

# 동 남 서 북
direction_idx = [0, 1, 2, 3]
direction_move = [[1,0],[0,-1],[-1,0],[0,1]]

# 남으로 초기화
location = 1

map_map = [["#"]*101 for _ in range(101)]

temp = [50, 50]

min_x = 50
max_x = 50
min_y = 50
max_y = 50

map_map[50][50] = '.'

for i in move:
    # print(i)
    if i == 'R':
        location = (location + 1) % 4
    elif i == 'L':
        location = (location - 1) % 4
    elif i == 'F':
        temp[0] += direction_move[location][0]
        temp[1] += direction_move[location][1]
        # print(temp[0], "와", temp[1])
        map_map[temp[0]][temp[1]] = '.'
        min_x = min(min_x, temp[0])
        max_x = max(max_x, temp[0])
        min_y = min(min_y, temp[1])
        max_y = max(max_y, temp[1])

# print(min_x)
# print(max_x)
# print(min_y)
# print(max_y)

# print(map_map[min_x][min_y])


for i in range(max_y, min_y - 1, -1):
    for j in range(min_x, max_x + 1):
        print(map_map[j][i], end="")
    print()

 

 

[참고 사이트]

https://zoosso.tistory.com/431

 

[BOJ] 백준 1347 미로 만들기

출처: https://www.acmicpc.net/problem/1347 Input 5 RRFRF Output .. .# 문제에서 N이 0보다 크고 50보다 작다고 했으므로 상하좌우 어떤 방향이든 한 방향으로만 가는 경우를 고려해서 미로의 크기를 101 × 101 설

zoosso.tistory.com

 

[느낀점]

좌표 문제에 슬슬 감이 잡혀가는 느낌쓰 ㅎㅎ

요즘 bfs, dfs 하다가 다시 구현 하니까 살짝 살맛난다ㅏ

이제 dp로 넘어가야징~~

 

 

728x90
반응형