<내 풀이> 못풀었다.
function solution(numbers, hand) {
var newNumbers = numbers.map(i => i === 0 ? 11 : i);
var left = [1,4,7,10];
var lefthand = 10;
var right = [3,6,9,12];
var righthand = 12;
var middle = [2,5,8,11];
var varHand = hand == 'right' ? 'R' : 'L';
var L_D;
var R_D;
return newNumbers.map(item => {
if(left.includes(item)){
lefthand = item;
return answer += 'L';
}
if(right.includes(item)){
righthand = item;
return answer += 'R';
}
if(middle.includes(item)){
if(left.includes(lefthand)){
L_D = Math.abs(lefthand+1-item)/3+1
}
if(middle.includes(lefthand)){
L_D = Math.abs(lefthand-item)/3
}
if(right.includes(righthand)){
R_D = Math.abs(righthand-1-item)/3+1
}
if(middle.includes(righthand)){
R_D = Math.abs(righthand-item)/3
}
if(L_D>R_D){
righthand = item;
return answer += 'R'
}
if(L_D<R_D){
lefthand = item;
return answer += 'L'
}
if(L_D=R_D){
if(varHand=='R'){
righthand = item;
return answer += 'R';
}else{
lefthand = item;
return answer += 'L';
}
}
}
})
}
<다른 사람 풀이>
function solution(numbers, hand) {
function dis(num, lH, rH, pos, hand){
const lD = Math.abs(pos[lH][0] - pos[num][0]) +
Math.abs(pos[lH][1] - pos[num][1])
const rD = Math.abs(pos[rH][0] - pos[num][0]) +
Math.abs(pos[rH][1] - pos[num][1])
if (lD === rD) return hand === 'left' ? 'L' : 'R';
return lD < rD ? 'L' : 'R'
}
const pos = {
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]
};
var lH = '*', rH = '#';
var result = ''
for (var num of numbers){
if (num % 3 === 1){
result += 'L';
lH = num;
}
else if (num !==0 && num % 3 === 0){
result += 'R';
rH = num;
}
else{
result += dis(num, lH, rH, pos, hand)
result[result.length-1] === 'L'? lH = num : rH = num
}
}
return result;
}
2차원 배열로 만들어서 푸는 법도 있군.
훨씬 코드가 깔끔해지는거 같다.
'주5일알고리즘' 카테고리의 다른 글
Programmers : 없는 숫자 더하기 with JS (0) | 2022.07.07 |
---|---|
Programmers: 크레인 인형뽑기 게임 with JS (0) | 2022.07.05 |
Programmers: 숫자 문자열과 영단어 with JS (0) | 2022.07.01 |
Programmers: 신규 아이디 추천 with JS (1) | 2022.06.30 |
Programmers: 로또의 초고 순위와 최저 순위 with JS (0) | 2022.06.28 |