반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120861
방향이동 구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 좌, 우, 상, 하를 의미하는 x,y좌표 dx, dy배열을 선언해 줍니다.
2. 정답 변수 answer 선언 후 [0,0]으로 초기화해줍니다.
3. 가로 길이 제한 width_limit, 세로 길이 제한 height_limit 선언 후 board의 절반으로 나눈 값으로 저장합니다.
📔 풀이과정
keyinput에 대해 loop를 수행하며 다음을 진행합니다.
1. input의 경우에 따라 다음 좌표를 구해줍니다.
2. 다음좌표가 유효하다면 answer를 해당 좌표로 갱신합니다.
📔 정답 출력 | 반환
answer를 반환합니다.
📕 Code
📔 Python3
dx = [-1,1,0,0]
dy = [0,0,1,-1]
def next_coord(pos, dir):
return [pos[0] + dx[dir], pos[1] + dy[dir]]
def is_valid(coord, width_limit, height_limit):
return -width_limit <= coord[0] and coord[0] <= width_limit and -height_limit <= coord[1] and coord[1] <= height_limit
def solution(keyinput, board):
answer = [0,0]
width_limit = board[0] // 2
height_limit = board[1] // 2
for input in keyinput:
coord = []
if input == 'left':
coord = next_coord(answer, 0)
print(coord)
elif input == 'right':
coord = next_coord(answer, 1)
elif input == 'up':
coord = next_coord(answer, 2)
else:
coord = next_coord(answer, 3)
if is_valid(coord, width_limit, height_limit):
answer = coord
return answer
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(Python3) - 프로그래머스(코딩테스트 입문) : 로그인 성공? (0) | 2024.11.03 |
---|---|
(Python3) - 프로그래머스(코딩테스트 입문) : 치킨 쿠폰 (0) | 2024.11.03 |
(Python3) - 프로그래머스(코딩테스트 입문) : 직사각형 넓이 구하기 (0) | 2024.11.02 |
(Python3) - 프로그래머스(코딩테스트 입문) : 다음에 올 숫자 (0) | 2024.11.02 |
(Python3) - 프로그래머스(코딩테스트 입문) : 옹알이 (1) (0) | 2024.11.02 |