반응형
문제 설명
전체 문제는 프로그래머스에 있습니다.
제한 사항
풀이
처음 문제를 본 나의 생각
- 1,4,7은 L로 고정, 3,6,9는 R로 고정
- 2,5,8,0일 경우가 문제인데.. 우선 키패드의 좌표 x, y를 저장해놨다가 현재 위치 값과 계산해보기..
그래서 나온 소스코드는 아래와 같다.
function solution(numbers, hand) {
var answer = [], coordMap = new Map();
coordMap.set(1, [0, 0]);
coordMap.set(2, [0, 1]);
coordMap.set(3, [0, 2]);
coordMap.set(4, [1, 0]);
coordMap.set(5, [1, 1]);
coordMap.set(6, [1, 2]);
coordMap.set(7, [2, 0]);
coordMap.set(8, [2, 1]);
coordMap.set(9, [2, 2]);
coordMap.set(0, [3, 1]);
let posL = [3, 0], posR = [3, 2];
numbers.forEach((v) => {
if("147*".includes(v)) {
posL = coordMap.get(v);
answer += "L";
} else if("369#".includes(v)) {
posR = coordMap.get(v);
answer += "R";
} else {
let distanceL = Math.abs(coordMap.get(v)[0]-posL[0]) + Math.abs(coordMap.get(v)[1]-posL[1]);
let distanceR = Math.abs(coordMap.get(v)[0]-posR[0]) + Math.abs(coordMap.get(v)[1]-posR[1]);
if(distanceL == distanceR) {
if(hand == "left") {
posL = coordMap.get(v);
answer += "L";
} else {
posR = coordMap.get(v);
answer += "R";
}
} else {
if(distanceL > distanceR) {
posR = coordMap.get(v);
answer += "R";
} else {
posL = coordMap.get(v);
answer += "L";
}
}
}
});
return answer;
}
이번 문제는 풀긴 했지만.. 너무 억지로 코딩을 한 느낌이라 다른 사람의 풀이도 확인해봤다.
다행히(?) 다들 고만고만하게 짠 느낌이라.. 패스
반응형
'개발 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/자바스크립트(JS)] 문자열 압축 (0) | 2022.04.21 |
---|---|
[프로그래머스/자바스크립트(JS)] 실패율 (0) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] 숫자 문자열과 영단어 (0) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] 신규 아이디 추천 (1) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] 로또의 최고 순위와 최저 순위 (0) | 2022.04.20 |