Algorithm/Programmers

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„ (level 1)

감자 πŸ₯” 2021. 8. 18. 17:01
λ°˜μ‘ν˜•

문제링크

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

 

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

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

programmers.co.kr

 

λ‚˜μ˜ 풀이

  1. 맞좘 갯수λ₯Ό λ¦¬μŠ€νŠΈμ— λ„£μ–΄μ„œ λ“±μˆ˜λŠ” 인덱슀둜 λ½‘μ•„μ˜¨λ‹€.
  2. lottos와 win nums μ‚¬μ΄μ—μ„œ κ²ΉμΉ˜λŠ” 번호λ₯Ό ν•©μ§‘ν•©μœΌλ‘œ κ΅¬ν•œ λ’€, 갯수λ₯Ό μ„Έμ–΄ μ΅œμ € μˆœμœ„λ₯Ό κ΅¬ν•œλ‹€.
  3. 0일 κ²½μš°μ—λŠ” '무쑰건 λ§žμΆ˜λ‹€'λΌλŠ” μƒκ°μœΌλ‘œ 졜고 μˆœμœ„λ₯Ό ꡬ할 수 μžˆλ‹€. λ”°λΌμ„œ μ΅œμ €μˆœμœ„λ‘œ μ‚°μ •λλ˜ κ°―μˆ˜μ— 0의 갯수λ₯Ό 더해쀀닀.
  4. lottosκ°€ μ „λΆ€ 0 μ΄μ–΄μ„œ len(same) 이 0μ΄λ‚˜μ˜€λŠ” 경우λ₯Ό λ”°λ‘œ μ²˜λ¦¬ν•΄μ€˜μ•Ό ν–ˆλ‹€. (if문으둜 μ²˜λ¦¬ν–ˆλ‹€.)
def solution(lottos, win_nums):
    
    price = [0, 6, 5, 4, 3, 2, 1] #인덱슀

    same = set(lottos) & set(win_nums)
    min_price = price.index(len(same))
    
    if min_price == 0 :
        min_price = 6
    
    if 0 in lottos:
        max_price = price.index(len(same)+lottos.count(0))
    else:
        max_price = min_price
    
    return [max_price, min_price]

 

λ‹€λ₯Έμ‚¬λžŒ 풀이

λ‚˜λŠ” 합집합에 μ§‘μ€‘ν•˜μ—¬ 'κ²ΉμΉ˜λŠ” 수의 숫자λ₯Ό μ„Έμ–΄μ€€λ‹€'λΌλŠ” κ°œλ…μ— μ§‘μ€‘ν–ˆλ‹€. ν•˜μ§€λ§Œ μ’‹μ•„μš”λ₯Ό κ°€μž₯ 많이 받은 풀이λ₯Ό μ‚΄νŽ΄λ³΄λ©΄, λ‘κ°œμ˜ 리슀트λ₯Ό '비ꡐ'만 ν•΄μ„œ, lottos에 μžˆλŠ” μˆ˜κ°€ win_nums에 μžˆλŠ”κ°€? λ₯Ό μ‚΄νŽ΄λ³΄λ©΄μ„œ answer에 +1 μ”© ν•˜λŠ” 방법을 μ‚¬μš©ν–ˆλ‹€. λ‚˜μ²˜λŸΌ lottosκ°€ μ „λΆ€ 0인경우λ₯Ό μ²˜λ¦¬ν•΄μ£ΌλŠ” 과정이 없어도 λ˜μ–΄ μ½”λ“œκ°€ 훨씬 κ°„κ²°ν–ˆλ‹€. μ΄λ ‡κ²Œ λ‘κ°œμ˜ 리슀트λ₯Ό λΉ„κ΅ν•΄μ„œ answer 을 ꡬ해 μ΅œμ € μˆœμœ„λ₯Ό κ΅¬ν•˜κ³ , 0을 μ„Έμ–΄μ„œ λ”ν•΄μ£Όλ©΄μ„œ 졜고 μˆœμœ„λ₯Ό κ΅¬ν–ˆλ‹€. 

μ•„λ¬΄λž˜λ„ μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ³ , κΉ”λ”ν•˜κ²Œ μ§œλŠ” 것에 λŒ€ν•΄μ„œλŠ” 지속적인 λ¬Έμ œν’€μ΄μ™€ μ—°μŠ΅μ΄ ν•„μš”ν•  것같닀 γ… γ… 

def solution(lottos, win_nums):

    rank=[6,6,5,4,3,2,1]

    cnt_0 = lottos.count(0)
    ans = 0
    for x in win_nums:
        if x in lottos:
            ans += 1
    return rank[cnt_0 + ans],rank[ans]

 

 

λ°˜μ‘ν˜•