D4
Problem
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
Solution
시작은 여러 곳일 수 있지만, 끝은 하나인 경우 끝부터 시작하면 편하다.
1. 시작 위치를 아래에서 찾는다.
2. 시작 위치를 기준으로 1을 따라서 간다.
3. 우선순위가 위보다 좌, 우에 있으므로 좌, 우부터 탐색한다.
4. 지나온 곳을 탐색할 수 없도록, 지나온 곳을 표시한다.(지워도 된다.)
Code
for test_case in range(1, 11):
T = int(input())
# 인덱싱을 편하게 하기위한 0 패딩
ladder = [[0] + list(map(int, input().split())) + [0] for _ in range(100)]
# 시작점 찾기
for i in range(1,102):
if ladder[99][i] == 2:
fin_idx = i
# 방향은 위와 좌, 우만 필요
di = [0, 0, -1]
dj = [-1, 1, 0]
# 시작 인덱스
recent_i = 99
recent_j = fin_idx
while recent_i != 0: # colum이 1이 아니면 끝남
for k in range(3):
if ladder[recent_i+di[k]][recent_j+dj[k]] == 1:
ladder[recent_i][recent_j] = 2 # 지나온 곳 지우기
recent_j += dj[k]
recent_i += di[k]
break
# 범위를 벗어나면 끝냄(혹시나 모를 예외처리)
if recent_i < 0 or recent_j < 0 or recent_i >= 102 or recent_j >= 102:
break
print(f'#{T} {recent_j-1}')
<부족한 부분은 댓글로 남겨주시면 저에게 도움이 됩니다!>
반응형
'Algorithm > SW Expert Academy Review' 카테고리의 다른 글
13994. 새로운 버스 노선 (0) | 2023.03.06 |
---|---|
4613. 러시아 국기 같은 깃발 (0) | 2023.03.06 |
1954. 달팽이 숫자 (0) | 2023.03.06 |
1961. 숫자 배열 회전 (0) | 2023.03.05 |
4839. [파이썬 S/W 문제해결 기본] 2일차 - 이진탐색 (0) | 2023.03.05 |