소스 코드

# 움직임 횟수
n = int(input())

# 이동 경로
move = list(str(input()))

# 남 서 북 동
x = [1,0,-1,0]
y = [0,-1,0,1]

# 시작 위치
# 임의의 위치 0,0
temp = [[0,0]]

# 현재 바라보는 방향
dir = 0

# 현재 위치 값
i = 0
j = 0

for q in move:

    # 앞으로 이동
    if q == 'F':
        i += x[dir % 4]
        j += y[dir % 4]
        temp.append([i,j])

    # 오른쪽 바라보기
    elif q == 'R':
        dir += 1

    # 왼쪽 바라보기
    else:
        dir += 3

# i 와 j 따로 저장
# 길이 알아내기 위함
i_idx = []
j_idx = []

for w in temp:
    i_idx.append(w[0])
    j_idx.append(w[1])

# 길이 저장
# board의 크기 결정
i_cnt = len(set(i_idx))
j_cnt = len(set(j_idx))

i_min = min(i_idx)

# 최소 값이 0보다 작으면 abs(최소값)만큼 다 더해주기
# 시작 위치를 0으로 고정하기 위해
if i_min < 0:
    i_c = abs(i_min)

# 그 이상이면 변화 시킬 필요 없음
else:
    i_c = 0

j_min = min(j_idx)
if j_min < 0:
    j_c = abs(j_min)
else:
    j_c = 0

# 아까 구했던 i와 j의 길이 값을 기반으로 board 생성
visited = [[0]*j_cnt for _ in range(i_cnt)]

# temp에 저장된 값 돌면서 방문한 곳은 . 처리
for e in temp:
    visited[e[0]+i_c][e[1]+j_c] = '.'

# 방문하지 않은 곳은 벽으로 처리
for ii in range(i_cnt):
    if ii != 0:
        print()
    for jj in range(j_cnt):
        if visited[ii][jj] == 0:
            print('#',end='')
        else:
            print(visited[ii][jj],end='')

 


해결 방법

1. 시작 위치를 임의로 정한 후, index 값을 만들어 감

 

2. 만들어진 index 값의 길이를 바탕으로 미로의 크기를 결정하고 미로를 만든다 


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.