programmers

[Programmers Level 1] 로또의 최고 순위와 최저 순위 Javascript

냠냠맨 2022. 12. 9. 21:16

⚡문제정보

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

 

프로그래머스

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

programmers.co.kr

문제가 너무 길어요... 가서 보세요.... 는 농담이고요

핵심만 보면 이렇습니다.

 

1. 정수 배열 두개가 주어집니다.

2. 순서상관없이 당첨번호가 내 로또배열에 존재하면 맞춘겁니다. 

3. 내 로또번호에는 0도 등장하는데 0은 알아볼수 없기때문에 1등일수도 아닐수도있습니다.

4. 0을 고려해서 내 당첨 가능한 최고순위와 최저 순위를 배열에 담아 리턴합니다. 

 

🙄제한사항

lottos는 길이 6인 정수 배열입니다.
lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
0은 알아볼 수 없는 숫자를 의미합니다.
0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
win_nums은 길이 6인 정수 배열입니다.
win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.

 

 


 

 

🔍접근방법

 

1. 0의 갯수를 알아야한다.

2. 0이 아니면서 틀린 번호의 개수를 알아야한다.

3. 0이 아니면서 맞은 번호의 개수를 알아야한다.

4. 맞은번호와 틀린번호를 등수로 적절히 치환해서 반환해야한다 


 

🔍나의 풀이

 

function solution(lottos, win_nums) {
    let winnum = 0
    let losenum = 0
    let zerocounter = 0
    let loseobj = {
        "6" : 6,
        "5" : 6,
        "4" : 5,
        "3" : 4,
        "2" : 3,
        "1" : 2,
        "0" : 1
    }
    
    let winobj = {
        "6" : 1,
        "5" : 2,
        "4" : 3,
        "3" : 4,
        "2" : 5,
        "1" : 6,
        "0" : 6
    }
    
    for(i=0 ; i < win_nums.length ; i++ ) {
        if(lottos[i] != 0) {
            if(win_nums.includes(lottos[i]) ){
                winnum++
            } 
            else losenum++
        }
        else zerocounter++
    }
    return [winobj[winnum + zerocounter],loseobj[losenum + zerocounter]]
}

 

그냥 생각한 의도를 그대로 옮겨서 짰습니다. 무식하게 풀면 안좋은데말이에요..ㅎㅎ;;

막상 생각해보니까 zerocounter는 필요가 없네요

만약 0인 케이스에는 losenum과 winnum을 모두 올려주면 됐으니까..

 

멍충멍충

 

 


 

반응형