1. 가장 마지막 행에 있는 2의 위치를 찾는다.
2. 1을 타고 거꾸로 올라가며 첫 째 행에서 1을 만나면 종료하고 열의 위치를 출력한다.
start_i = len(a)-1 # 맨 마지막 행
start_j = a[-1].index('2') # 맨 마지막 행의 2의 열 위치
def check(i, j): # return 값이 0이면 왼쪽에 1이 존재, 1이면 오른쪽에 1이 존재
if j == 0 : # j가 맨 왼쪽에 존재하는 경우 j-1을 하게 될 때 IndexError 방지를 위한 조건
if a[i][j+1] == '1':
return 1
elif j == len(a) - 1: # j가 맨 오른쪽에 존재하는 경우 j+1을 하게 될 때 IndexError 방지를 위한 조건
if a[i][j-1] == '1':
return 0
else:
if a[i][j-1] == '1':
return 0
elif a[i][j+1] == '1':
return 1
def go_left(i, j): # 무한 루프를 돌며 왼쪽으로 1이 계속 존재하면 이동한다. 0을 만나면 반복문 탈출 및 현재 j값 리턴
while True:
if j == 0:
break
if a[i][j-1] == '0':
break
j -= 1
return j
def go_right(i, j): # go_left와 동일하게 오른쪽으로 이동
while True:
if j == len(a) - 1:
break
if a[i][j+1] == '0':
break
j += 1
return j
while True: # check return이 0이면 왼쪽으로 이동하며 j update, 1이면 오른쪽으로 이동하며 update
if check(start_i, start_j) == 0:
start_j = go_left(start_i, start_j)
elif check(start_i, start_j) == 1:
start_j = go_right(start_i, start_j)
start_i = start_i - 1 # 왼쪽 혹은 오른쪽으로의 이동이 종료되면 위로 이동
if start_i == 0:
print(start_j)
break
생애 첫 알고리즘 문제 풀이였는데, input을 받는 법도 몰라 직접 txt 파일을 읽어 문제를 풀었다.
그래서 테스트 케이스 10개는 맞췄지만 제출을 못해서 시간/메모리 초과 여부도 모른다..
앞으로 더욱 열심히 하는 것 밖에는 답이 없다고 절실히 느끼게 됐다.
(주)같이의가치(구 백찬영) 임직원 일동은 홍찬우 학생의 무궁한 발전을 응원합니다 ^&^