728x90
코드트리
문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
코드
- while 문을 사용
- moved를 활용해 조건에 만족하지 않을 때까지 계속 이동하도록 구현
- 상, 하, 좌, 우의 우선순위에 따라 이동하기 때문에 가장 큰 수로 이동하지 않도록 구현
- for문을 사용해서 (상, 하, 좌, 우) 순서대로 작동하도록
- 격자판 내에서 가장 큰 수가 없다면 moved = False
n, r, c = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(n)]
dx = [-1, 1, 0, 0] # 상, 하, 좌, 우에 해당하는 x 방향 이동
dy = [0, 0, -1, 1] # 상, 하, 좌, 우에 해당하는 y 방향 이동
# 0-based index로 변환
r -= 1
c -= 1
# 결과를 저장할 리스트
result = [graph[r][c]]
while True:
moved = False
# 4 방향에 대해 우선순위 고려
for i in range(4):
new_r = r + dx[i]
new_c = c + dy[i]
# 범위 안에 있고 현재 위치보다 값이 큰 경우
if 0 <= new_r < n and 0 <= new_c < n and graph[new_r][new_c] > graph[r][c]:
r, c = new_r, new_c
result.append(graph[r][c])
moved = True
break
# 더 이상 이동할 수 없을 때 종료
if not moved:
break
print(*result)
728x90
반응형
'Algorithm > 코드트리' 카테고리의 다른 글
[코드트리] 숫자가 가장 큰 인접한 곳으로 동시에 이동 - 파이썬 (0) | 2024.08.07 |
---|---|
[코드트리] 십자 모양 폭발 - 파이썬 (0) | 2024.08.04 |
[코드트리] 1차원 젠가 - 파이썬 (0) | 2024.08.04 |
[코드트리] 삼각형 컨베이어 벨트 - 파이썬 (0) | 2024.08.02 |
[코드트리] 컨베이어 벨트 - 파이썬 (0) | 2024.08.02 |