λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Programmers

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1단계 : 둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„

by μ½”νŒŒμΉ΄ 2022. 11. 28.
728x90

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1단계 : 둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ > 2021 Dev-Matching: μ›Ή λ°±μ—”λ“œ 개발자(μƒλ°˜κΈ°) > 둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„


πŸ’© 문제 μ„€λͺ…

둜또 6/45(μ΄ν•˜ '둜또'둜 ν‘œκΈ°)λŠ” 1λΆ€ν„° 45κΉŒμ§€μ˜ 숫자 쀑 6개λ₯Ό μ°μ–΄μ„œ λ§žνžˆλŠ” λŒ€ν‘œμ μΈ λ³΅κΆŒμž…λ‹ˆλ‹€. μ•„λž˜λŠ” 둜또의 μˆœμœ„λ₯Ό μ •ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

1μœ„ πŸ‘‰ 6개 λ²ˆν˜Έκ°€ λͺ¨λ‘ 일치
2μœ„ πŸ‘‰ 5개 λ²ˆν˜Έκ°€ 일치
3μœ„ πŸ‘‰ 4개 λ²ˆν˜Έκ°€ 일치
4μœ„ πŸ‘‰ 3개 λ²ˆν˜Έκ°€ 일치
5μœ„ πŸ‘‰ 2개 λ²ˆν˜Έκ°€ 일치
6μœ„(낙첨) πŸ‘‰ κ·Έ μ™Έ

둜또λ₯Ό κ΅¬λ§€ν•œ λ―Όμš°λŠ” 당첨 번호 λ°œν‘œμΌμ„ ν•™μˆ˜κ³ λŒ€ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, 민우의 동생이 λ‘œλ˜μ— λ‚™μ„œλ₯Ό ν•˜μ—¬, 일뢀 번호λ₯Ό μ•Œμ•„λ³Ό 수 μ—†κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 당첨 번호 λ°œν‘œ ν›„, λ―Όμš°λŠ” μžμ‹ μ΄ κ΅¬λ§€ν–ˆλ˜ 둜또둜 당첨이 κ°€λŠ₯ν–ˆλ˜ 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„λ₯Ό μ•Œμ•„λ³΄κ³  μ‹Άμ–΄μ‘ŒμŠ΅λ‹ˆλ‹€. μ•Œμ•„λ³Ό 수 μ—†λŠ” 번호λ₯Ό 0으둜 ν‘œκΈ°ν•˜κΈ°λ‘œ ν•˜κ³ , λ―Όμš°κ°€ κ΅¬λ§€ν•œ 둜또 번호 6κ°œκ°€ 44, 1, 0, 0, 31 25라고 κ°€μ •ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 당첨 번호 6κ°œκ°€ 31, 10, 45, 1, 6, 19라면, 당첨 κ°€λŠ₯ν•œ 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„μ˜ ν•œ μ˜ˆλŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

당첨 번호 31 10 45 1 6 19 κ²°κ³Ό
졜고 μˆœμœ„ 번호 31 0 πŸ‘‰ 10 44 1 0 πŸ‘‰ 6 25 4개 번호 일치 πŸ‘‰ 3λ“±
μ΅œμ € μˆœμœ„ 번호 31 0 πŸ‘‰ 11 44 1 0 πŸ‘‰ 7 25 2개 번호 일치 πŸ‘‰ 5λ“±

❓ μˆœμ„œμ™€ 상관없이, κ΅¬λ§€ν•œ λ‘œλ˜μ— 당첨 λ²ˆν˜Έμ™€ μΌμΉ˜ν•˜λŠ” λ²ˆν˜Έκ°€ 있으면 맞힌 걸둜 μΈμ •λ©λ‹ˆλ‹€.
❓ μ•Œμ•„λ³Ό 수 μ—†λŠ” 두 개의 번호λ₯Ό 각각 10, 6이라고 κ°€μ •ν•˜λ©΄ 3등에 당첨될 수 μžˆμŠ΅λ‹ˆλ‹€.
❓ 3등을 λ§Œλ“œλŠ” λ‹€λ₯Έ 방법듀도 μ‘΄μž¬ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ, 2λ“± μ΄μƒμœΌλ‘œ λ§Œλ“œλŠ” 것은 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.
❓ μ•Œμ•„λ³Ό 수 μ—†λŠ” 두 개의 번호λ₯Ό 각각 11, 7이라고 κ°€μ •ν•˜λ©΄ 5등에 당첨될 수 μžˆμŠ΅λ‹ˆλ‹€.
❓ 5등을 λ§Œλ“œλŠ” λ‹€λ₯Έ 방법듀도 μ‘΄μž¬ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ, 6λ“±(낙첨)으둜 λ§Œλ“œλŠ” 것은 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

λ―Όμš°κ°€ κ΅¬λ§€ν•œ 둜또 번호λ₯Ό 담은 λ°°μ—΄ lottos, 당첨 번호λ₯Ό 담은 λ°°μ—΄ win_numsκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. μ΄λ•Œ, 당첨 κ°€λŠ₯ν•œ 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„λ₯Ό μ°¨λ‘€λŒ€λ‘œ 배열에 λ‹΄μ•„μ„œ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

πŸ’© μ œν•œ 쑰건

☝️ lottosλŠ” 길이 6인 μ •μˆ˜ λ°°μ—΄μž…λ‹ˆλ‹€.
✌ lottos의 λͺ¨λ“  μ›μ†ŒλŠ” 0 이상 45 μ΄ν•˜μΈ μ •μˆ˜μž…λ‹ˆλ‹€.
    0은 μ•Œμ•„λ³Ό 수 μ—†λŠ” 숫자λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
    0을 μ œμ™Έν•œ λ‹€λ₯Έ μˆ«μžλ“€μ€ lottos에 2개 이상 λ‹΄κ²¨μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    lottos의 μ›μ†Œλ“€μ€ μ •λ ¬λ˜μ–΄ μžˆμ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
πŸ‘Œ win_nums은 길이 6인 μ •μˆ˜ λ°°μ—΄μž…λ‹ˆλ‹€.
βœ‹ win_nums의 λͺ¨λ“  μ›μ†ŒλŠ” 1 이상 45 μ΄ν•˜μΈ μ •μˆ˜μž…λ‹ˆλ‹€.
    win_numsμ—λŠ” 같은 μˆ«μžκ°€ 2개 이상 λ‹΄κ²¨μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    win_nums의 μ›μ†Œλ“€μ€ μ •λ ¬λ˜μ–΄ μžˆμ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

πŸ’© 문제 풀이

function solution(lottos, win_nums) {
    let lottosN = lottos.sort((a, b) => a - b)
    let win_numsN = win_nums.sort((a, b) => a - b)
    let max = 0;
    let min = 0;
    for(i=0; i<lottosN.length; i++){
        if(lottosN.includes(win_numsN[i])){
            max++;
            min++;
        }
        if(lottosN[i] == 0){
            max++;
        }
    }
    switch(min){
        case 0:
            min += 1;
    }
    switch(max){
        case 0:
            max += 1;
    }
    return [7 - max, 7 - min];
}

κ΅¬λ§€ν•œ 둜또 λ²ˆν˜Έμ™€ 당첨 번호 배열은 μš°μ„  sort()둜 μ •λ ¬ν•΄ μ€λ‹ˆλ‹€. max, min은 각각 졜고 μˆœμœ„ 번호, μ΅œμ € μˆœμœ„ λ²ˆν˜Έκ°€ 될 κ²ƒμž…λ‹ˆλ‹€. for문을 μ‚¬μš©ν•˜μ—¬, κ΅¬λ§€ν•œ λ²ˆν˜Έμ™€ 당첨 번호λ₯Ό λΉ„κ΅ν•˜μ—¬ 같은 번호의 개수λ₯Ό κ΅¬ν•΄μ€λ‹ˆλ‹€. 0은 무쑰건 맞힌 번호라고 κ°€μ •ν•˜μ—¬, 0의 개수만큼 졜고 μˆœμœ„ λ²ˆν˜Έμ— 더해 μ€λ‹ˆλ‹€. 둜또 μˆœμœ„λ₯Ό μ•Œμ•„λ‚΄λŠ” 방법은 7μ—μ„œ λ‹Ήμ²¨λœ 번호의 숫자λ₯Ό 빼주기만 ν•˜λ©΄ λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‹Ήμ²¨λœ 번호의 κ°œμˆ˜κ°€ 1 ν˜Ήμ€ 0일 κ²½μš°λŠ” 6μœ„μ΄κΈ° λ•Œλ¬Έμ—, 0일 κ²½μš°μ—λŠ” 1을 더해 μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. μ‚Όν•­μ—°μ‚°μžκ°€ 훨씬 깔끔할 것 같은데, switch문을 μ•ˆ μ¨λ΄μ„œ 괜히 ν•œλ²ˆ μ¨λ΄€μŠ΅λ‹ˆλ‹€.

πŸ’© λ‹€λ₯Έ 풀이

function solution(lottos, win_nums) {
    const rank = [6, 6, 5, 4, 3, 2, 1];

    let minCount = lottos.filter(v => win_nums.includes(v)).length;
    let zeroCount = lottos.filter(v => !v).length;

    const maxCount = minCount + zeroCount;

    return [rank[maxCount], rank[minCount]];
}

rank 배열을 λ§Œλ“€μ–΄μ„œ 맞힌 번호 개수λ₯Ό κ΅¬ν•˜λ©΄ μžλ™μœΌλ‘œ μˆœμœ„λ₯Ό ꡬ할 수 있게 μž‘μ—…ν•΄ μ£Όμ—ˆλ„€μš”. 맞힌 번호 κ°œμˆ˜λŠ” filter()둜 μ•„μ£Ό κ°„λ‹¨ν•˜κ²Œ ꡬ해 μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. 천재!

728x90

λŒ“κΈ€

κ°μ‚¬ν•©λ‹ˆλ‹€. πŸ¦™

CSS
κ΄‘κ³  쀀비쀑