대구AI스쿨 프로젝트, 알고리즘
프로그래머스 2020카카오 인턴십 기출 키패드 누르기
left = current
이런식으로 변경하니 가리키는 참조값이 같은 얕은복사가 일어난 것이 문제라고 생각했다.function solution(numbers, hand) {
let answer = '';
let left = [0,0];
let right = [2,0];
let current = [0,0];
// 왼손, 오른손 위치 알아내서 거리 계산 해야 함
numbers.forEach(element=>{
if(element%3===1) { // 1, 4, 7
answer = answer.concat('L');
left[0] = 0;
left[1] = 3 - parseInt(element/3);
left = current;
} else if (element%3===0 && element!==0) { // 3, 6, 9
answer = answer.concat('R');
right[0] = 0;
right[1] = 3 - parseInt(element/3)+1;
right = current;
} else { // 2, 5, 8, 0
current[0] = 1;
current[1] = (element===0) ? 0 : 3 - parseInt(element/3);
let from_left = Math.abs(left[0]-current[0]) + Math.abs(left[1]-current[1]);
let from_right = Math.abs(right[0]-current[0]) + Math.abs(right[1]-current[1]);
if(from_left<from_right) {
answer = answer.concat('L');
left = current;
} else if(from_left===from_right){
if(hand==='left') {
answer = answer.concat('L');
left = current;
} else {
answer = answer.concat('R');
right = current;
}
} else if (from_left>from_right){
answer = answer.concat('R');
right = current;
}
}
});
return answer;
}
// left = current;
left = current.slice();
오늘은 대구AI스쿨 프로젝트 관련 이슈를 해결할 것이 많아서 개인 프로젝트 생각을 못했다. 그래도 알고리즘 문제 풀이 시 다른 풀이 보기 전 혼자 문제점을 알아내고 실제로 맞았다는 것이 뿌듯했다.