Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- JavaScript
- 알고리즘
- redux-toolkit
- react
- 자바
- programmers
- Algorithm
- Python
- 이코테
- react-redux
- 항해플러스
- react-router
- redux
- sw expert academy
- 프로그래머스
- 테코테코
- 코딩테스트합격자되기
- C++
- useDispatch
- SW
- 매일메일
- 항해99
- java
- createSlice
- Get
- redux-saga
- axios
- maeil-mail
- 리액트
- json-server
Archives
- Today
- Total
Binary Journey
[프로그래머스] 키패드 누르기 본문
반응형
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
** Javascript (+1)
이렇게 푸는 게 맞는 건지는 모르겠지만 어쨌든 풀었다.
const keypad = {
1: [0, 0], 2: [0, 1], 3: [0, 2],
4: [1, 0], 5: [1, 1], 6: [1, 2],
7: [2, 0], 8: [2, 1], 9: [2, 2], 0: [3, 1]
};
const left = [1, 4, 7];
const right = [3, 6, 9];
function solution(numbers, hand) {
let answer = "";
let currRight = [3, 0];
let currLeft = [3, 2];
for (const number of numbers) {
if (left.includes(number)) {
answer += "L";
currLeft = [...keypad[number]];
}
else if (right.includes(number)) {
answer += "R";
currRight = [...keypad[number]];
} else {
let currLoc = [...keypad[number]];
let distanceFromLeft = Math.abs(currLoc[0] - currLeft[0]) + Math.abs(currLoc[1] - currLeft[1]);
let distacneFromRight = Math.abs(currLoc[0] - currRight[0]) + Math.abs(currLoc[1] - currRight[1]);
if (distanceFromLeft > distacneFromRight) {
answer += "R";
currRight = [...currLoc];
}
else if (distanceFromLeft === distacneFromRight) {
if (hand === "right") {
answer += "R";
currRight = [...currLoc];
} else {
answer += "L";
currLeft = [...currLoc];
}
}
else {
answer += "L";
currLeft = [...currLoc];
}
}
}
return answer;
}
반응형
'프로그래머스 > level 1' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 (0) | 2021.11.15 |
---|---|
[프로그래머스] 없는 숫자 더하기 (0) | 2021.11.08 |
[프로그래머스] 크레인 인형뽑기 게임 (0) | 2021.11.08 |
[프로그래머스] 음양 더하기 (0) | 2021.11.07 |
[프로그래머스] 내적 (0) | 2021.11.01 |