λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
개발/자료ꡬ쑰 & μ•Œκ³ λ¦¬μ¦˜

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

by 1mj 2021. 10. 24.

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

 

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

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

programmers.co.kr

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅λ¬Έμ œ 쀑 "둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„" 문제 풀이이닀.

쑰금만 μƒκ°ν•˜λ©΄ λͺ¨λ‘ ν’€ 수 μžˆλŠ” μ•„μ£Ό μ‰¬μš΄ 좕에 μ†ν•˜λŠ” 문제 κ°™λ‹€.

 

문제의 ν¬μΈνŠΈλŠ” μ•„λž˜μ™€ κ°™λ‹€.

  • κ΅¬λ§€ν•œ 둜또 λ°°μ—΄κ³Ό 당첨 λ°°μ—΄ 쀑 μΌμΉ˜ν•˜λŠ” μˆ«μžλ§ŒνΌμ€ 이미 보μž₯된 당첨 κ°œμˆ˜μ΄λ―€λ‘œ λͺ¨λ₯΄λŠ” λ²ˆν˜Έκ°€ λ‹€ λ‹Ήμ²¨λ˜μ§€ μ•Šκ²Œ 되면 μ΅œμ € 당첨 개수
  • κ΅¬λ§€ν•œ 둜또 λ°°μ—΄μ—μ„œ 0으둜 된 λͺ¨λ₯΄λŠ” λ²ˆν˜Έλ“€μ€ 당첨 번호일 κ°€λŠ₯성이 μžˆλŠ” λ²ˆν˜Έλ“€μ΄λ―€λ‘œ 0으둜 된 λ²ˆν˜Έκ°€ λͺ¨λ‘ 당첨될 번호라면 졜고 당첨 개수
  • λ‹Ήμ²¨λœ λ²ˆν˜Έλ“€μ„ λ“±μˆ˜λ‘œ λ³€ν™˜ν•˜κΈ° μœ„ν•΄μ„œλŠ” 6 - λ‹Ήμ²¨λœλ²ˆν˜Έ + 1을 ν•˜λ©΄ 됨
  • 두 λ°°μ—΄μ˜ 길이가 λͺ¨λ‘ κ°™κ³  쀑볡을 κ³ λ €ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€λŠ” 점

 

import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        // lottos: λ―Όμš°κ°€ κ΅¬λ§€ν•œ 둜또 번호λ₯Ό 담은 λ°°μ—΄
        // win_nums: 당첨 번호λ₯Ό 담은 λ°°μ—΄
        
        // 두 배열이 μΌμΉ˜ν•˜λŠ” 값은 μ΅œμ € 당첨 개수
        // 두 배열이 같은 κ°’κ³Ό 0으둜 된 값을 ν•©μΉ˜λ©΄ 졜고 당첨 개수
        int minmCnt = 0;
        int maxmCnt = 0;
        for (int i = 0; i < lottos.length; i++) {
            // 두 λ°°μ—΄ 쀑 μΌμΉ˜ν•˜λŠ” 번호 개수
            if (contains(win_nums, lottos[i])) {
               minmCnt++;
            }
            // 민우 λ°°μ—΄μ—μ„œ λͺ¨λ₯΄λŠ” κ°’(0으둜 된 κ°’)
            if (lottos[i] == 0) {
               maxmCnt++; 
            }
        }
        maxmCnt = minmCnt + maxmCnt;
        
        // 당첨 κ°€λŠ₯ν•œ 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„
        int[] answer = {parseRank(maxmCnt), parseRank(minmCnt)};
        return answer;
    }
    
    // 숫자 배열에 ν¬ν•¨λ˜λŠ”μ§€ ν™•μΈν•˜λŠ” ν•¨μˆ˜
    public static boolean contains(int[] arr, int key) {
        for (int num : arr) {
            if (num == key) {
                return true;
            }
        }
        return false;
    }
    
    // μΌμΉ˜ν•˜λŠ” 번호 수λ₯Ό μž…λ ₯ λ°›μ•„ μˆœμœ„λ‘œ λ³€ν™˜ν•˜λŠ” ν•¨μˆ˜
    public static int parseRank(int val) {
        int temp = 6 - val + 1;
        if (temp >= 6) {
            return 6;
        }
        return temp;
    }
}

λŒ“κΈ€