πŸ‘©‍πŸ’»κ°œλ°œ_TIL/μ½”λ”©ν…ŒμŠ€νŠΈ

둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„

Daisy.lee 2022. 1. 24. 18:30

둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„

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

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - 둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„

둜또 6/45(μ΄ν•˜ '둜또'둜 ν‘œκΈ°)λŠ” 1λΆ€ν„° 45κΉŒμ§€μ˜ 숫자 쀑 6개λ₯Ό μ°μ–΄μ„œ λ§žνžˆλŠ” λŒ€ν‘œμ μΈ λ³΅κΆŒμž…λ‹ˆλ‹€. μ•„λž˜λŠ” 둜또의 μˆœμœ„λ₯Ό μ •ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 1 μˆœμœ„ 당첨 λ‚΄μš© 1 6개 λ²ˆν˜Έκ°€ λͺ¨λ‘ 일치 2 5개 번호

programmers.co.kr

일치 번호 κ°œμˆ˜μ™€ μˆœμœ„κ°€ 달라 ꡬ뢄이 ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€. μ œκ°€ ν‘Ό 방식은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

1. λ‚˜μ˜ 풀이

function solution(lottos, win_nums) {
    let answer = [];
    
    let minNum = lottos.filter(n => win_nums.includes(n)).length;
    let maxNum = lottos.filter(n => n === 0).length + minNum;
    
    maxNum > 1 ? answer.push(7 - maxNum) : answer.push(6);
    minNum > 1 ? answer.push(7 - minNum) : answer.push(6);
    
    return answer;
    
}

 

 

πŸ€” 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„λ₯Ό 각각 κ΅¬ν•΄μ„œ pushν•œλ‹€.

πŸ€” 7μ—μ„œ μ΅œλŒ€/μ΅œμ†Œ 일치 개수λ₯Ό λΉΌλ©΄ 졜고/μ΅œμ € μˆœμœ„κ°€ λ‚˜μ˜¨λ‹€. -> 일치 개수λ₯Ό μ„Έμ•Ό ν•œλ‹€.

πŸ€” μΌμΉ˜ν•˜λŠ” 개수λ₯Ό μ„ΈκΈ° μœ„ν•΄μ„œλŠ” νŠΉμ • 쑰건에 λ§žλŠ” μš”μ†Œλ“€λ§Œ 뽑아 λ°°μ—΄μ˜ 길이λ₯Ό κ΅¬ν•˜λ©΄ λœλ‹€.

 

πŸ“Œ filter λ©”μ„œλ“œ

πŸ“Œμ‚Όν•­μ—°μ‚°μž

 

πŸ’‘ μ£Όμ˜ν•΄μ•Ό ν•  것은, 일치 κ°œμˆ˜κ°€ 1κ³Ό 0일 λ•ŒλŠ” λͺ¨λ‘ μˆœμœ„κ°€ 6으둜 ν‘œμ‹œλ˜μ–΄μ•Ό ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄μ„œ μ €λŠ” 쑰건문으둜 μ²˜λ¦¬ν•˜μ˜€κ³ , μ‚Όν•­μ—°μ‚°μžλ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. (λ‹€λ§Œ includes λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것은 μ‹œκ°„λ³΅μž‘λ„ μΈ‘λ©΄μ—μ„œ νš¨μœ¨μ μ΄μ§€ λͺ»ν•˜λ‹€λŠ” μ„€λͺ…을 λ³΄μ•˜μŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ λ°°μ—΄μ˜ 길이자 μž‘μœΌλ©΄ μƒκ΄€μ—†μ§€λ§Œ, 길이가 길수둝 처리 μ‹œκ°„μ΄ κΈΈμ–΄μ§„λ‹€λŠ” 점을 μœ λ…ν•΄μ•Όκ² μŠ΅λ‹ˆλ‹€.)

2. 당첨 μˆœμœ„λ₯Ό λ°°μ—΄λ‘œ 생성 (feat. μ’‹μ•„μš” 71개λ₯Ό 받은 풀이 λ°©λ²•πŸ‘)

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

 

 

πŸ€” 당첨 μˆœμœ„μ™€ 당첨 개수의 관계λ₯Ό μ΄μš©ν•΄ μˆœμœ„λ₯Ό λ°°μ—΄λ‘œ λ§Œλ“€μ–΄ 볼까? -> 잘 ν•˜λ©΄ 인덱슀 ν™œμš© κ°€λŠ₯

πŸ€” 당첨 개수λ₯Ό filter λ©”μ„œλ“œμ™€ length 속성을 μ΄μš©ν•΄ κ΅¬ν•˜κ³ , 이λ₯Ό μˆœμœ„μ— λ„£μž.

 

πŸ’‘ 당첨 μˆœμœ„λ₯Ό 직접 λ°°μ—΄λ‘œ λ§Œλ“€μ–΄ 인덱슀λ₯Ό ν™œμš©ν•˜λ„λ‘ ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ‚Όν•­μ—°μ‚°μžλ‘œ μ²˜λ¦¬ν•˜μ§€ μ•Šκ³  당첨 개수 1κ°œμ™€ 0개인 경우의 μˆœμœ„λ₯Ό 직접 6으둜 지정해쀄 수 μžˆλ‹€λŠ” μ μ—μ„œ νŽΈλ¦¬ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.

3쀄 정리

1. νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” λ°°μ—΄μ˜ μš”μ†Œλ§Œ 뽑을 λ•ŒλŠ” filter ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μž.