먼저 left,right는 col up,down은 row를 사용하여 얼만큼 이동했는지 변수를 사용하여 저장하였다.
그리고 max_col과 max_row를 사용하여 board에서 이동할수 있는 좌표의 한계를 지정하였다.
def solution(keyinput, board):
row = 0
col = 0
max_row = (board[0] - 1) // 2
max_col = (board[1] - 1) // 2
for i in range(len(keyinput)):
if(keyinput[i] == 'left'):
row -= 1
if(keyinput[i] == 'right'):
row += 1
if(keyinput[i] == 'up'):
col += 1
if(keyinput[i] == 'down'):
col -= 1
if row < -max_row:
row = -max_row
elif row > max_row:
row = max_row
if col < -max_col:
col = -max_col
elif col > max_col:
col = max_col
answer =[row,col]
return answer
하지만 테스트케이스중에 빠트린 케이스가 있어서 확인을 해봤다.
3번 테스트에서 right > right > right > right > right > left 먼 결과값이 4,0이라고 생각했다. 하지만 max_col의 경계를 넘어갈수 없기때문에 3,0이 나와야 된다. 그래서 keyinput[i]에서 max_col과 max_row의 값을 넘어가지않게 수정하였다
def solution(keyinput, board):
row = 0
col = 0
max_row = (board[1] - 1) // 2
max_col = (board[0] - 1) // 2
for i in range(len(keyinput)):
if keyinput[i] == 'left' and col > -max_col:
col -= 1
elif keyinput[i] == 'right' and col < max_col:
col += 1
elif keyinput[i] == 'up' and row < max_row:
row += 1
elif keyinput[i] == 'down'and row > -max_row:
row -= 1
if col < -max_col:
col = -max_col
elif col > max_col:
col = max_col
if row < -max_row:
row = -max_row
elif row > max_row:
row = max_row
answer = [col, row]
return answer
정답이다.
'코딩테스트' 카테고리의 다른 글
프로그래머스 ox 퀴즈 level0 python (0) | 2024.07.18 |
---|---|
프로그래머스 주사위 게임 3 level0 python (0) | 2024.07.17 |
프로그래머스 level0 숨어있는 숫자의 덧셈 (2) (0) | 2024.07.14 |
무작위로 K개의 수 뽑기 level 0 (0) | 2024.07.11 |
프로그래머스 크기가 작은 부분 문자열 level 1 (2) | 2024.07.10 |