Programmers

[ 1단계 ] 둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„

Design-loving front-end engineer 2022. 8. 4. 22:05

πŸ”΄  문제 μ„€λͺ…

둜또 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의 μ›μ†Œλ“€μ€ μ •λ ¬λ˜μ–΄ μžˆμ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

 

🟑  μž…μΆœλ ₯ 예

lottos win_nums result
[44, 1, 0, 0, 31, 25] [31, 10, 45, 1, 6, 19] [3, 5]
[0, 0, 0, 0, 0, 0] [38, 19, 20, 40, 15, 25] [1, 6]
[45, 4, 35, 20, 3, 9] [20, 9, 3, 45, 4, 35] [1, 1]

 

🟒  μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1
문제 μ˜ˆμ‹œμ™€ κ°™μŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2
μ•Œμ•„λ³Ό 수 μ—†λŠ” λ²ˆν˜Έλ“€μ΄ μ•„λž˜μ™€ κ°™μ•˜λ‹€λ©΄, 1λ“±κ³Ό 6등에 당첨될 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹Ήμ²¨λ²ˆν˜Έ 38 19 20 40 15 25 κ²°κ³Ό
졜고 μˆœμœ„ 번호 0→38 0→19 0→20 0→40 0→15 0→25 6개 번호 일치, 1λ“±
μ΅œμ € μˆœμœ„ 번호 0→21 0→22 0→23 0→24 0→26 0→27 0개 번호 일치, 6λ“±

μž…μΆœλ ₯ 예 #3
λ―Όμš°κ°€ κ΅¬λ§€ν•œ 둜또의 λ²ˆν˜Έμ™€ 당첨 λ²ˆν˜Έκ°€ λͺ¨λ‘ μΌμΉ˜ν•˜λ―€λ‘œ, 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„λŠ” λͺ¨λ‘ 1λ“±μž…λ‹ˆλ‹€.

 

πŸ”΅  μ½”λ“œ

 
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]];
}