문제 주소 - https://school.programmers.co.kr/learn/courses/30/lessons/120861
📝사고의 흐름
- 방향키가 들어있는 배열을 돌며 switch case로 무슨 키인지 검사하고, 좌표값을 ++ 혹은 -- 해주자.
[0, 0]에서 시작하므로 [0, 0] 배열을 선언하고, 이 배열의 값을 증감하자. - 그런데 무한정 이동할 수는 없다. max x값과 max y값을 구한다.
- 음수방향으로 가는 경우도 있으므로 max x 혹은 max y에 마이너스를 붙인 값도 잊으면 안된다.
- 만약 max x와 max y, 그리고 음수방향을 넘으면 더이상 값이 증가하지 않도록 해야 한다.
- switch case에서 방향키를 검사할 때 현재 좌표가 최대값에 다다르지 않았는지 검사하고, 최대값이 아닌 경우에만 좌표를 증감하도록 한다.
💻코드
function solution(keyinput, board) {
const xy = [0, 0];
const MAX_X = (board[0] - 1) / 2;
const MAX_Y = (board[1] - 1) / 2;
function calculate(arrow, xy) {
switch (arrow) {
case 'left':
if (xy[0] !== -MAX_X) --xy[0];
break;
case 'right':
if (xy[0] !== MAX_X) ++xy[0];
case 'up':
if (xy[1] !== MAX_Y) ++xy[1];
break;
case 'down':
if (xy[1] !== -MAX_Y) --xy[1];
}
}
keyinput.forEach((arrow) => calculate(arrow, xy));
return xy;
}
'알고리즘 이론 & 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv.0 | 구슬을 나누는 경우의 수 (0) | 2023.07.07 |
---|---|
프로그래머스 Lv.0 - 직각삼각형 출력하기 +) nodejs readline (0) | 2023.07.06 |
프로그래머스 Lv.0 | 최빈값 구하기 (0) | 2023.07.05 |
프로그래머스 Lv.0 | 분수의 덧셈 (0) | 2023.07.02 |
프로그래머스 Lv.0 | 자릿수 더하기 (0) | 2023.06.30 |