하루에 한 문제
[프로그래머스 2020 카카오 인턴십] 키패드 누르기 -JavaScript 본문
https://programmers.co.kr/learn/courses/30/lessons/67256
function solution(numbers, hand) {
var answer = '';
hand=hand.replace("right","R").replace("left","L");
let left='*';
let right='#';
let point={};
keyPadIndex(point); // 각 키의 위치 저장
for (let i = 0; i < numbers.length; i++){
if(numbers[i]!=0 &&numbers[i]%3==0) {
answer+="R";
right=numbers[i];
}
else if(numbers[i]!=0 &&(numbers[i]-1)%3==0) {
answer+="L";
left=numbers[i];
}
else{
let leftDir=dir(numbers[i], left);
let rightDir=dir(numbers[i], right)
if(leftDir==rightDir){
answer+=hand;
if(hand=='R') right=numbers[i];
else left=numbers[i];
}
else if(leftDir>rightDir){
answer+='R';
right=numbers[i];
}
else{
answer+="L";
left=numbers[i];
}
}
}
function dir( a, b){
return Math.abs(point[a][0]-point[b][0])+Math.abs(point[a][1]-point[b][1]);
}
function keyPadIndex(point){
let num=1;
for(let i=0; i<3; i++){
for(let j=0; j<3; j++){
point[num++]=[i,j];
}
}
point[0] = [3, 1];
point['*'] = [3, 0];
point['#'] = [3, 2];
}
return answer;
}
소요시간 : 40분
우선 로직을 살펴보면
1. point라는 객체를 만들어서 각 키패드의 좌표를 저장해준다.
2. 1,4,7 은 왼손클릭
3. 3,6,9 는 오른손클릭
4. 2,5,8,0 은 왼손, 오른손중 가까운 손으로 클릭
이게 끝인 문제입니다...근데 147, 369 골라내는 과정에서 0을 생각안하고 아래와같이 코드를 짜다가...
0이 자꾸 2번째 else if문에 들어가서 이거 찾는다고 고생좀 했습니다...ㅎㅎ
끝
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 2021 Dev-Matching: 웹 백엔드 개발자] 로또의 최고 순위와 최저 순위 -JavaScript (0) | 2021.05.11 |
---|---|
[프로그래머스 2021 KAKAO BLIND RECRUITMENT] 신규 아이디 추천 -JavaScript (4) | 2021.05.10 |
[프로그래머스 2018 KAKAO BLIND RECRUITMENT] 프렌즈4블록 -JavaScript (0) | 2021.05.06 |
[프로그래머스 2019 KAKAO BLIND RECRUITMENT] 실패율 -JavaScript (1) | 2021.05.05 |
[프로그래머스 2020 KAKAO BLIND RECRUITMENT] 괄호 변환 -JavaScript (0) | 2021.05.04 |
Comments