코딩테스트
프로그래머스 level0 캐릭터의 좌표
choyou831
2024. 7. 15. 11:03
먼저 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
정답이다.