문제
순서대로 누를 번호가 담긴 배열 numbers
왼손잡이인지 오른손잡이인지를 나타내는 문자열 hand
→ 각 번호를 누른 엄지손가락이 왼손인지 오른손인지를 나타내는 연속된 문자열 형태로 return
코드
const solution = (numbers, hand) => {
let answer = '';
let 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],
'*': [3, 0],
0: [3, 1],
'#': [3, 2],
};
let leftHand = keypad['*'];
let rightHand = keypad['#'];
for (let x of numbers) {
let [i, j] = keypad[x];
if (j === 0) {
answer += 'L';
leftHand = keypad[x];
}
else if (j === 2) {
answer += 'R';
rightHand = keypad[x];
}
else {
// 왼쪽 손가락 위치와 현재 위치와 떨어진 거리계산
let leftDistance = Math.abs(i - leftHand[0]) + Math.abs(j - leftHand[1]);
// 오른쪽 손가락 위치와 현재 위치와 떨어진 거리계산
let rightDistance = Math.abs(i - rightHand[0]) + Math.abs(j - rightHand[1]);
if (leftDistance > rightDistance) {
rightHand = keypad[x];
answer += 'R';
}
else if (leftDistance < rightDistance) {
leftHand = keypad[x];
answer += 'L';
}
else if (leftDistance === rightDistance) {
if (hand === 'left') {
leftHand = keypad[x];
answer += 'L';
} else {
rightHand = keypad[x];
answer += 'R';
}
}
}
}
return answer;
}
'💡Algorithm > 문제풀기' 카테고리의 다른 글
JS알고리즘 | 프로그래머스(Level 1) - 소수만들기 (0) | 2021.09.16 |
---|---|
JS알고리즘 | 프로그래머스(Level 1) - 크레인 인형뽑기 게임 (0) | 2021.09.15 |
JS알고리즘 | 프로그래머스(Level 1) - 예산 (0) | 2021.09.14 |
JS알고리즘 | 프로그래머스(Level 1) - 3진법 뒤집기 (0) | 2021.09.14 |
JS알고리즘 | 프로그래머스(Level 1) - 다트게임 (0) | 2021.09.13 |