Gaegul's devlog
[SWEA] 1210. Ladder1 본문
728x90
반응형
SW Expert Academy [S/W 문제해결 기본] 시리즈
1210. Ladder1
[문제]
출발점 x=0 및 x=9인 세로 방향의 두 막대 사이에 임의의 개수의 막대들이 랜덤 간격으로 추가되고(이 예에서는 2개가 추가됨) 이 막대들 사이에 가로 방향의 선들이 또한 랜덤하게 연결된다. 100* 100 에서 맨 위에서 출발하여 가능한 길을 따라 도착하는 좌표를 출력한다.
[제약 사항]
한 막대에서 출발한 가로선이 다른 막대를 가로질러서 연속하여 이어지는 경우는 없다.
[입력]
입력 파일의 첫 번째 줄에는 테스트 케이스의 번호가 주어지며, 바로 다음 줄에 테스트 케이스가 주어진다.
총 10개의 테스트 케이스가 주어진다.
e.g.
1
1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 ...
1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 ...
1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 ...
1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 ...
1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 ...
1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 ...
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 도착하게 되는 출발점의 x좌표를 출력한다.
e.g.
#1 67
...
[코드]
def solve(ladder, N):
d_row = N-1
d_col = ladder[N-1].index(2) #시작점 = 2인 좌표(99행 부터 위로 올라가며 탐색)
move = 0
while d_row > 0: #0행이 될때까지 돌기.
if (move == 0 or move == 1) and d_col > 0 and ladder[d_row][d_col-1]:
d_col -= 1 #왼쪽으로 이동
move = 1
elif (move == 0 or move == 2) and d_col < N-1 and ladder[d_row][d_col+1]:
d_col += 1 #오른쪽 이동
move = 2
else:
d_row -= 1 #위로 이동
move = 0
return d_col
for t in range(10):
N = 100
case = int(input())
ladder = [list(map(int, input().split())) for _ in range(N)]
print(f'#{case} {solve(ladder, N)}')
728x90
반응형
'Algorithm > Algorithm 풀이' 카테고리의 다른 글
[SWEA] 1215. 회문1 (0) | 2021.08.21 |
---|---|
[SWEA] 1213. String (0) | 2021.08.21 |
[SWEA] 1209. Sum (0) | 2021.08.21 |
[SWEA] 1208. Flatten (0) | 2021.08.11 |
[SWEA] 1206. View (0) | 2021.08.11 |
Comments