728x90
📌 문제
https://swexpertacademy.com/main/main.do
📌 문제 접근 방법
- 맞이한 문제들👿
- 현재 칸에서 왼쪽이 1이면 왼쪽으로 이동을 하는데
- 이동 후에도 왼쪽으로 또 이동해야 하는데, 오른쪽에도 1이 있음!!!!
- -> 재귀함수로 계속 왼쪽으로만 갈 수 있도록 구현 (오른쪽도 마찬가지)
- j가 0이거나 99일 때 생기는 IndexError
- 이것도 함수를 따로 구현해서 처리해주니 그나마 깔끔,,
later) 칸을 중심으로 이동하는 게 아니라, 세로축을 기준으로 이동하면 가로방향을 한 방에 이동할 수 있다!
📌 코드
import sys
sys.stdin = open('input.txt')
def mv_left(i, j):
# j가 0일 경우 좌표 그대로 리턴
if j == 0:
return i, j
# j가 0이 아닐 경우 왼쪽이 1이 아닐 때까지 왼쪽으로 이동
elif ladder[i][j-1]:
return mv_left(i, j-1)
# 더이상 왼쪽이 1이 아닐 경우 좌표 리턴
else:
return i, j
def mv_right(i, j):
if j == 99:
return i, j
elif ladder[i][j+1]:
return mv_right(i, j+1)
else:
return i, j
for _ in range(10):
t = int(input())
ladder = []
for _ in range(100):
ladder.append(list(map(int, input().split())))
# 도착점의 좌표 구하기 ladder[i][j]
i = 99
j = 0
while True:
if ladder[i][j] == 2:
break
else:
j += 1
while i:
i -= 1
if j == 0:
i, j = mv_right(i, j)
continue
elif j == 99:
i, j = mv_left(i, j)
continue
elif ladder[i][j-1]:
i, j = mv_left(i, j)
elif ladder[i][j+1]:
i, j = mv_right(i, j)
print('#{} {}'.format(t, j))
728x90
'ALGORITHM > SW Expert Academy' 카테고리의 다른 글
[SWEA/Python] 4869. 종이붙이기 (0) | 2021.08.24 |
---|---|
[SWEA/Python] 1221. GNS (0) | 2021.08.23 |
[SWEA/Python] 1979. 어디에 단어가 들어갈 수 있을까 (0) | 2021.08.13 |
[SWEA/Python] 4837. 부분집합의 합 (0) | 2021.08.13 |
[SWEA/Python] 4836. 색칠하기 (0) | 2021.08.13 |
댓글