티스토리 뷰
교재에 서술된 정답 코드가 아닌, 제가 직접 작성한 코드입니다.
- solution 함수를 구현하여 입력문 생략
- 게임 캐릭터의 방향과 방문지 출력 등의 테스트 코드 포함
- 책에 있는 코드와의 차이점
- turn_left() 함수 미사용
- 방문한 위치를 저장하기 위한 맵 미사용 (메모리 효율적)
def solution(n, m, x, y, d, maps) :
steps = [ [-1, 0], [0, 1], [1, 0], [0, -1] ] # index is the direction 0, 1, 2, 3
count = 1
maps[x][y] = -1 # if visited, change value to -1
limit = 4
print(f'*** visited: {[x, y]} ***')
while True :
d = d - 1 if d - 1 >= 0 else 3 # turn left
dx, dy = x + steps[d][0], y + steps[d][1]
print(f'{[dx, dy]}, 방향: {d}, maps[dx][dy] = {maps[dx][dy]}, limit = {limit}')
if maps[dx][dy] == 0 : # Land (not visited)
count += 1
x, y = dx, dy
maps[x][y] = -1
print(f'*** visited: {[x, y]} ***')
limit = 4 # reset the value
elif maps[dx][dy] in [-1, 1] : # Sea or Visited
limit -= 1
if limit == 0 : # No way to go
dx, dy = x - steps[d][0], y - steps[d][1] # take a back step
print(f'back step: {[dx, dy]}, maps[dx][dy] = {maps[dx][dy]}')
if maps[dx][dy] == 1 : # if sea, end the game
break
else :
x, y = dx, dy
limit = 4
print(count)
solution(4, 4, 1, 1, 0, [[1, 1, 1, 1], [1, 0, 0, 1], [1, 1, 0, 1], [1, 1, 1, 1]])
728x90
'코딩 테스트' 카테고리의 다른 글
[이것이 코딩 테스트다] 실전 문제 5-4 미로 탈출 (0) | 2023.05.20 |
---|---|
파이썬 문자열에서 특정 문자를 찾을 때 find() VS in (0) | 2023.05.03 |
[이것이 코딩 테스트다] 예제 4-1 상하좌우 (0) | 2023.05.01 |
[파이썬] 특정 알파벳의 순서 찾기 (ord 함수 사용) (0) | 2022.03.08 |