๐ŸŒž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