문제링크
문제풀이
function distance(x, y) {
let oneDismensionDistance = Math.abs(x - y);
return Math.floor(oneDismensionDistance / 3) + (oneDismensionDistance % 3);
}
function pushAndAnswer(stack, number, answer) {
stack.push(number);
if (stack[0] === 10) {
answer += "L";
} else {
answer += "R";
}
return answer;
}
function solution(numbers, hand) {
let answer = "";
let lstack = [10];
let rstack = [12];
for (let i = 0; i < numbers.length; i++) {
if (numbers[i] == 0) {
numbers[i] = 11;
}
if (numbers[i] % 3 === 0) {
answer = pushAndAnswer(rstack, numbers[i], answer);
} else if (numbers[i] % 3 === 1) {
answer = pushAndAnswer(lstack, numbers[i], answer);
} else {
let ldistance = distance(lstack[lstack.length - 1], numbers[i]);
let rdistance = distance(rstack[rstack.length - 1], numbers[i]);
if (ldistance < rdistance) {
answer = pushAndAnswer(lstack, numbers[i], answer);
} else if (ldistance > rdistance) {
answer = pushAndAnswer(rstack, numbers[i], answer);
} else {
if (hand === "right") {
answer = pushAndAnswer(rstack, numbers[i], answer);
} else {
answer = pushAndAnswer(lstack, numbers[i], answer);
}
}
}
}
return answer;
}