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 |
Tags
- Python
- Get
- redux-saga
- react-router
- maeil-mail
- 코딩테스트합격자되기
- Algorithm
- 리액트
- java
- 프로그래머스
- react
- 매일메일
- 자바
- axios
- 항해플러스
- 이코테
- sw expert academy
- react-redux
- redux-toolkit
- C++
- 알고리즘
- useDispatch
- 항해99
- JavaScript
- createSlice
- json-server
- SW
- programmers
- 테코테코
- redux
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 |