문제
https://programmers.co.kr/learn/courses/30/lessons/67256?language=javascript
코드
function solution(numbers, hand) {
var answer = '';
const key_dict = {
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 cur_left = '*'
let cur_right = '#'
for (let i=0; i<numbers.length; i++) {
if ([1,4,7].includes(numbers[i])) {
answer += "L"
cur_left = numbers[i]
} else if ([3,6,9].includes(numbers[i])) {
answer += "R"
cur_right = numbers[i]
} else {
const l = key_dict[cur_left]
const r = key_dict[cur_right]
const c = key_dict[numbers[i]]
const distance_left = Math.abs(l[0]-c[0]) + Math.abs(l[1]-c[1])
const distance_right = Math.abs(r[0]-c[0]) + Math.abs(r[1]-c[1])
if (distance_right < distance_left) {
answer += "R"
cur_right = numbers[i]
} else if (distance_right > distance_left) {
answer += "L"
cur_left = numbers[i]
} else {
if (hand == "right") {
answer += "R"
cur_right = numbers[i]
} else {
answer += "L"
cur_left = numbers[i]
}
}
}
}
return answer;
}
'⏳ 알고리즘 > JavaScript 알고리즘' 카테고리의 다른 글
프로그래머스 - LV2. 기능개발 (0) | 2021.06.28 |
---|---|
프로그래머스 - LV2. 짝지어 제거하기(2017 팁스타운) (0) | 2021.06.21 |
프로그래머스 - LV1. 신규 아이디 추천(카카오 2021 블라인드 채용) (0) | 2021.06.21 |
프로그래머스 - LV1. 모의고사 (0) | 2021.06.20 |
프로그래머스 - LV1. 체육복 (0) | 2021.06.20 |