🌞Algorithm/πŸ”₯programmers

[programmers] 둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„ - 2021 Dev-Matching: μ›Ή λ°±μ—”λ“œ 개발자

λΏŒμ•Ό._. 2021. 11. 24. 13:57

μ½”λ”© ν…ŒμŠ€νŠΈ μ—°μŠ΅ - 2021 Dev-Matching: μ›Ή λ°±μ—”λ“œ 개발자

 


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

문제 μ„€λͺ…

 

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

- μˆœμ„œμ™€ 상관없이, κ΅¬λ§€ν•œ λ‘œλ˜μ— 당첨 λ²ˆν˜Έμ™€ μΌμΉ˜ν•˜λŠ” λ²ˆν˜Έκ°€ 있으면 맞힌 걸둜 μΈμ •λ©λ‹ˆλ‹€.
- μ•Œμ•„λ³Ό 수 μ—†λŠ” 두 개의 번호λ₯Ό 각각 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의 μ›μ†Œλ“€μ€ μ •λ ¬λ˜μ–΄ μžˆμ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.)

 

 

문제 풀이

   - my solution

//JAVA

import java.util.HashMap;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        
        HashMap<Integer,Integer> map = new HashMap<>(); //μˆœμœ„
        map.put(6,1);
        map.put(5,2);
        map.put(4,3);
        map.put(3,4);
        map.put(2,5);
        map.put(1,6);
        map.put(0,6);
        
        int correct=0;
        int zero=0;
        for(int i=0; i<6; i++){
            if (lottos[i]==0){ //μ•Œμ•„ 볼수 μ—†λŠ” 번호
                zero+=1;
            }
            else{
                for(int j=0; j<6; j++){
                    if(lottos[i]==win_nums[j]){ //μΌμΉ˜ν•˜λŠ” 번호
                        correct+=1;
                    }
                }
            }
        }
        answer[0]=map.get(correct+zero); //졜고 μˆœμœ„
        answer[1]=map.get(correct); //μ΅œμ € μˆœμœ„
        
        return answer;
    }
}

 

#Python

def solution(lottos, win_nums):
    answer = []
    
    match=[]
    zero=0
    for i in lottos:
        if i==0: #μ•Œμ•„ λ³Ό 수 μ—†λŠ” 번호
            zero+=1
        else:
            for j in win_nums:
                if i==j: #μΌμΉ˜ν•˜λŠ” 번호
                    match.append(i)
    
    dic = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}
    
    answer.append(dic[len(match)+zero]) #졜고 μˆœμœ„
    answer.append(dic[len(match)]) #μ΅œμ € μˆœμœ„
    return answer

 

1) μ•Œμ•„λ³Ό 수 μ—†λŠ” 번호 count

2) μΌμΉ˜ν•˜λŠ” 번호 count

3) 졜고 μˆœμœ„: μΌμΉ˜ν•˜λŠ” 번호 + μ•Œμ•„λ³Ό 수 μ—†λŠ” 번호 

   μ΅œμ € μˆœμœ„: μΌμΉ˜ν•˜λŠ” 번호


μƒκ°πŸ€”

 

μ•Œκ³ λ¦¬μ¦˜μ„ ν’€λ©° λ‹€μ‹œ level 1으둜 λŒμ•„μ™”λ‹€.

μ°¨κ·Όμ°¨κ·Ό μ˜¬λΌκ°€κΈ° μœ„ν•΄,,(?)

λ¬Έμ œκΈΈμ΄κ°€ κΈ΄ 것에 λΉ„ν•΄ μ½”λ“œλŠ” 짧게 κ΅¬ν˜„ν•  수 μžˆμ—ˆλ‹€.

크게 생각할 λΆ€λΆ„ 없이 μ‰½κ²Œ 톡과할 수 μžˆλŠ” λ¬Έμ œμ˜€λ‹€.


좜처: ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”© ν…ŒμŠ€νŠΈ μ—°μŠ΅, https://programmers.co.kr/learn/challenges