본문 바로가기
알고리즘/프로그래머스 문제-JS

[JS]키패드 누르기

by sweesweet 2022. 7. 12.

https://school.programmers.co.kr/learn/courses/30/lessons/67256

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

한참을 못풀었던 문제인데 약간 패턴이 눈에 보여서 겨우 풀게되었다

나는..바부여서 좌표는 생각하지 못했구...*# 을 10, 12로 생각하고 문제를 풀었다.

우선 1,4,7 or 3,6,9는 기본으로 왼쪽혹은 오른쪽으로 가게했고

2580일때가 문제였는데...

0일때는 el=11로 대입하였다.

무지성으로 막 풀었는데, 보니까 3으로 나눴을때의 몫과 나머지를 더하면 얼마나 움직이는지가 나와서 아래와 같이 elright elLeft를 따로 선언해서 풀었느데...잘...모르겠다....알고리즘강의를 사놓고 안듣고있네...나란사람..

그래도!!!그래도 다른사람들보단 시간짧았다 다행이다

function solution(numbers, hand) {
    let left =10
    let right=12
    let answer=''
    for(let el of numbers){
        if(el===1||el===4||el===7){
            left=el
            answer+='L'
        }
        else if(el===3||el===6||el===9){
            right=el
            answer+='R'
        }
        else{
            if(el===0){
                el=11
            }

            let elLeft=Math.floor(Math.abs(el-left)/3)+Math.abs(el-left)%3
            let elRight=Math.floor(Math.abs(el-right)/3)+Math.abs(el-right)%3
            if(elLeft>elRight){
                answer+='R'
                right=el
            }
            else if(elLeft<elRight){
                answer+='L'
                left=el
            }else{
                if(hand==='right'){
                    answer+='R'
                    right=el
                }else{
                    answer+='L'
                    left=el
                }
            }
        }
        
    };
    return answer;
}

'알고리즘 > 프로그래머스 문제-JS' 카테고리의 다른 글

[JS]주차 요금 계산  (0) 2022.12.21
[JS] 겹치는 선분의 길이  (0) 2022.11.01
[JS]부족한 금액  (0) 2022.07.06
[JS]최소직사각형  (0) 2022.07.06
[JS] 비밀지도  (0) 2022.07.03