100 x 100 크기의 2차원 배열로 주어진 사다리에 대해서, 지정된 도착점에 대응되는 출발점 X를 구하는 문제!

def find(): # 결승점 index 찾기
for i in range(100):
if(maps[99][i]==2):
return (i)
T = 10 # 테스트케이스의 개수 T
for test_case in range(1, T+1):
test_case = int(input()) # 테스트케이스 번호
maps = [] # 맵을 저장할 리스트
# 맵 입력받기
for _ in range(100):
maps.append(list(map(int, input().split())))
# 시작점 찾기
j = find()
for i in range(99, -1, -1):
if(j > 0 and maps[i][j-1]): # 사다리가 있을 시
while(j > 0 and maps[i][j-1]):
j -= 1
continue
if(j < 99 and maps[i][j+1]): # 사다리가 있을 시
while(j < 99 and maps[i][j+1]):
j += 1
continue
print("#%d %d" % (test_case, j))
[문제풀이]
도착지에서 위로 타고 올라가면서 사다리 발견시 이동하면 되는 간단한 문제.
우선 정답의 위치 (99, ?)를 찾는다.
그 후 역으로 위로 올라가면서 사다리를 발견시 이동하면 된다.
if(j > 0 and maps[i][j-1]): # 사다리가 있을 시
while(j > 0 and maps[i][j-1]):
j -= 1
continue
if(j < 99 and maps[i][j+1]): # 사다리가 있을 시
while(j < 99 and maps[i][j+1]):
j += 1
continue
j-1, j+1 이렇게 양 옆 검사해서 사다리를 발견했다?
그럼 0 나오기 전까지 계속 이동한다.
그래서 이렇게 위로 이동하며 사다리 타다가 첫번째 행에 도착시 그때의 j 좌표가 답이다.
'코딩테스트 > SWEA' 카테고리의 다른 글
| [Python, 파이썬] SWEA 1230. [S/W 문제해결 기본] 8일차 - 암호문3 (0) | 2024.11.10 |
|---|---|
| [Python, 파이썬] SWEA 1228. [S/W 문제해결 기본] 8일차 - 암호문1 (0) | 2024.11.10 |
| [Python, 파이썬] SWEA 13428. 숫자 조작 (1) | 2024.11.10 |
| [Python, 파이썬] SWEA 3282. 0/1 Knapsack (0) | 2024.11.10 |
| [Python, 파이썬] SWEA 1493. 수의 새로운 연산 (1) | 2024.10.22 |