λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€/1단계

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

by Jaeguk 2022. 6. 13.
문제 링크

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

 

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

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

programmers.co.kr

둜또 λ‹Ήμ²¨λ²ˆν˜Έ 6κ°œμ™€ λ‚™μ„œλœ 민우의 λ²ˆν˜Έκ°€ μ£Όμ–΄μ‘Œμ„λ•Œ, 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„λ₯Ό 좜λ ₯ν•˜λŠ” 문제.

 

풀이

λ¬Έμžμ—΄μ„ μ΄μš©ν•œ λ¬Έμ œλ³΄λ‹€λŠ” 훨씬 μ‰½κ²Œ λŠκ»΄μ‘Œλ‹€.

둜또 λ‹Ήμ²¨λ²ˆν˜Έ 6κ°œμ™€ 민우의 둜또 λ²ˆν˜Έκ°€ 주어진닀.

민우의 둜또 λ²ˆν˜ΈλŠ” λ™μƒμ˜ λ‚™μ„œλ‘œ 인해 번호 λͺ‡ κ°œκ°€ μ§€μ›Œμ‘Œλ‹€. λ¬Όλ‘  ν•˜λ‚˜λ„ μ§€μ›Œμ§€μ§€μ•Šμ€ κ²½μš°λ„ μžˆμ„ 것이닀.

μ΄λ•Œ, λ―Όμš°κ°€ 당첨될 수 μžˆλŠ” 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„λ₯Ό λ¦¬ν„΄ν•˜λŠ” 문제.

λ²ˆν˜Έκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ λ‹Ήμ²¨λ²ˆν˜ΈμΈμ§€ μ•„λ‹Œμ§€ λ°”λ‘œ νŒŒμ•…ν•˜κΈ° μœ„ν•΄μ„œ boolνƒ€μž…μ˜ λ°°μ—΄ bool winning[46]을 λ§Œλ“€μ–΄μ£Όμ—ˆλ‹€. 이 쀑에 λ‹Ήμ²¨λ²ˆν˜Έμ˜ 인덱슀만 true둜 ν‘œμ‹œν•΄μ€€λ‹€.

winning[num] == true λ©΄ ν•΄λ‹Ή 번호(num)λŠ” 당첨 λ²ˆν˜ΈλΌλŠ” λœ»μ΄λ‹€.

일단 λ―Όμš°κ°€ 가진 λ²ˆν˜Έμ€‘μ— λ‚™μ„œλ‘œμΈν•΄ μ§€μ›Œμ§„ 0의 κ°œμˆ˜κ°€ λͺ‡ κ°œμΈμ§€, 당첨 λ²ˆν˜Έκ°€ λͺ‡ κ°œμΈμ§€ μ„Όλ‹€.

1. 졜고 μˆœμœ„λŠ” μ§€μ›Œμ§„ λ²ˆν˜Έκ°€ λ‹€ λ‹Ήμ²¨λ²ˆν˜ΈλΌκ³  μƒκ°ν–ˆμ„ λ•Œμ˜ μˆœμœ„μΌ 것이닀.

(0의 개수 + κΈ°μ‘΄ 당첨 번호 개수) 만큼 λ§žν˜”μ„ λ•Œ λͺ‡μœ„인지 μ²΄ν¬ν•˜λ©΄ λœλ‹€.

2. μ΅œμ € μˆœμœ„λŠ” μ§€μ›Œμ§„ λ²ˆν˜Έκ°€ λͺ¨λ‘ λ‹Ήμ²¨λ²ˆν˜Έκ°€ μ•„λ‹ˆλΌκ³  ν–ˆμ„ λ•Œμ˜ μˆœμœ„μΌ 것이닀.

(κΈ°μ‘΄ 당첨 번호 개수) 만 λ§žν˜”μ„ λ•Œ λͺ‡μœ„인지 μ²΄ν¬ν•˜λ©΄ λœλ‹€.

 

μˆœμœ„λ₯Ό λ¦¬ν„΄ν•΄μ£ΌλŠ” ν•¨μˆ˜λŠ” λ‹¨μˆœν•˜κ²Œ 쑰건문을 μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„ν–ˆλ‹€.

 
#include <string>
#include <vector>
 
using namespace std;
 
bool winning[46];
int get_rank(int cnt){
    if(cnt == 6return 1;
    else if(cnt == 5return 2;
    else if(cnt == 4return 3;
    else if(cnt == 3return 4;
    else if(cnt == 2return 5;
    else return 6;
}
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    for(int i = 0; i<win_nums.size(); i++)
        winning[win_nums[i]] = true;
    int count_win = 0;
    int count_zero = 0;
    for(int i = 0; i<lottos.size(); i++){
        int num = lottos[i];
        if(winning[num]) count_win++;
        if(num == 0) count_zero++;
    }
    vector<int> answer;
    answer.push_back(get_rank(count_win + count_zero));
    answer.push_back(get_rank(count_win));
    return answer;
}
cs

 

 

728x90