๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ - 2022 KAKAO BLIND RECRUITMENT

๋ฟŒ์•ผ._. 2022. 1. 17. 21:51

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต - 2022 KAKAO BLIND RECRUITMENT

 


<์‹ ๊ณ  ๊ฒฐ๊ณผ๋ฐ›๊ธฐ>

๋ฌธ์ œ ์„ค๋ช…

 

์‹ ์ž…์‚ฌ์› ๋ฌด์ง€๋Š” ๊ฒŒ์‹œํŒ ๋ถˆ๋Ÿ‰ ์ด์šฉ์ž๋ฅผ ์‹ ๊ณ ํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์ง€๊ฐ€ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ ์œ ์ €๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๋ช…์˜ ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
-์‹ ๊ณ  ํšŸ์ˆ˜์— ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์œ ์ €๋ฅผ ๊ณ„์†ํ•ด์„œ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
-ํ•œ ์œ ์ €๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹ ๊ณ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋™์ผํ•œ ์œ ์ €์— ๋Œ€ํ•œ ์‹ ๊ณ  ํšŸ์ˆ˜๋Š” 1ํšŒ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
k๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋œ ์œ ์ €๋Š” ๊ฒŒ์‹œํŒ ์ด์šฉ์ด ์ •์ง€๋˜๋ฉฐ, ํ•ด๋‹น ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•œ ๋ชจ๋“  ์œ ์ €์—๊ฒŒ ์ •์ง€ ์‚ฌ์‹ค์„ ๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค.
-์œ ์ €๊ฐ€ ์‹ ๊ณ ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ทจํ•ฉํ•˜์—ฌ ๋งˆ์ง€๋ง‰์— ํ•œ๊บผ๋ฒˆ์— ๊ฒŒ์‹œํŒ ์ด์šฉ ์ •์ง€๋ฅผ ์‹œํ‚ค๋ฉด์„œ ์ •์ง€ ๋ฉ”์ผ์„ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ „์ฒด ์œ ์ € ๋ชฉ๋ก์ด ["muzi", "frodo", "apeach", "neo"]์ด๊ณ , k = 2(์ฆ‰, 2๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋‹นํ•˜๋ฉด ์ด์šฉ ์ •์ง€)์ธ ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
(์ƒ๋žต)

์ด์šฉ์ž์˜ ID๊ฐ€ ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด id_list, ๊ฐ ์ด์šฉ์ž๊ฐ€ ์‹ ๊ณ ํ•œ ์ด์šฉ์ž์˜ ID ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด report, ์ •์ง€ ๊ธฐ์ค€์ด ๋˜๋Š” ์‹ ๊ณ  ํšŸ์ˆ˜ k๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ ์œ ์ €๋ณ„๋กœ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ”์ผ์„ ๋ฐ›์€ ํšŸ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

 

2 ≤ id_list์˜ ๊ธธ์ด ≤ 1,000
- 1 ≤ id_list์˜ ์›์†Œ ๊ธธ์ด ≤ 10
- id_list์˜ ์›์†Œ๋Š” ์ด์šฉ์ž์˜ id๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ด๋ฉฐ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
- id_list์—๋Š” ๊ฐ™์€ ์•„์ด๋””๊ฐ€ ์ค‘๋ณตํ•ด์„œ ๋“ค์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

1 ≤ report์˜ ๊ธธ์ด ≤ 200,000
- 3 ≤ report์˜ ์›์†Œ ๊ธธ์ด ≤ 21
- report์˜ ์›์†Œ๋Š” "์ด์šฉ์ž id ์‹ ๊ณ ํ•œ id"ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
- ์˜ˆ๋ฅผ ๋“ค์–ด "muzi frodo"์˜ ๊ฒฝ์šฐ "muzi"๊ฐ€ "frodo"๋ฅผ ์‹ ๊ณ ํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
- id๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
- ์ด์šฉ์ž id์™€ ์‹ ๊ณ ํ•œ id๋Š” ๊ณต๋ฐฑ(์ŠคํŽ˜์ด์Šค) ํ•˜๋‚˜๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
- ์ž๊ธฐ ์ž์‹ ์„ ์‹ ๊ณ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

1 ≤ k ≤ 200, k๋Š” ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
return ํ•˜๋Š” ๋ฐฐ์—ด์€ id_list์— ๋‹ด๊ธด id ์ˆœ์„œ๋Œ€๋กœ ๊ฐ ์œ ์ €๊ฐ€ ๋ฐ›์€ ๊ฒฐ๊ณผ ๋ฉ”์ผ ์ˆ˜๋ฅผ ๋‹ด์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

def solution(id_list, report, k):
    answer = [0] * len(id_list)
    
    dict={} # ์œ ์ €ID : ์œ ์ €๊ฐ€ ์‹ ๊ณ ํ•œ ID
    for i in id_list: #์ดˆ๊ธฐํ™”
        dict[i]=[]
    
    for i in report: #dict๋กœ ์ •๋ฆฌ
        x=i.split()
        dict[x[0]].append(x[1])
    
    
    for key,value in dict.items(): #๋™์ผ ์œ ์ €์— ๋Œ€ํ•œ ์‹ ๊ณ  ํšŸ์ˆ˜๋Š” 1ํšŒ๋กœ ์ฒ˜๋ฆฌ
        dict[key]=set(value)
    
    temp={} # ์‹ ๊ณ ๋œ ID: ์‹ ๊ณ ๋œ ํšŸ์ˆ˜
    for i in id_list: #์ดˆ๊ธฐํ™”
        temp[i]=0
    
    for key,value in dict.items(): # ์‹ ๊ณ 
        for i in value:
            temp[i]+=1
    
    for key,value in temp.items(): 
        if value>=k: # k๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋œ ์œ ์ €
            for x,y in dict.items():
                if key in y: # ํ•ด๋‹น ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•œ ๋ชจ๋“  ์œ ์ €์—๊ฒŒ ์ •์ง€ ์‚ฌ์‹ค์„ ๋ฉ”์ผ๋กœ ๋ฐœ์†ก
                    answer[id_list.index(x)]+=1

    return answer

 

1) ์œ ์ € ID ๋ณ„๋กœ ์‹ ๊ณ ํ•œ ID๋ฅผ ์ €์žฅํ•˜๋Š” dict๋ฅผ ๋งŒ๋“ค์–ด์คŒ
- ๋™์ผ ์œ ์ €์— ๋Œ€ํ•œ ์‹ ๊ณ  ํšŸ์ˆ˜ ์ฒ˜๋ฆฌ ์œ„ํ•ด set ์‚ฌ์šฉ

2) ์‹ ๊ณ ๋œ ID ํšŸ์ˆ˜๋ฅผ count ํ•˜๊ธฐ ์œ„ํ•ด dict๋ฅผ ๋งŒ๋“ค์–ด์คŒ

3) k๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋œ ์œ ์ €๊ฐ€ ์žˆ์œผ๋ฉด -> ๊ทธ ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•œ ์œ ์ €์—๊ฒŒ ๋ฉ”์ผ์„ ๋ฐœ์†กํ•˜๊ธฐ ์œ„ํ•ด answer ๋ฐฐ์—ด์— ํ•ด๋‹น ๊ฐ’ ์ถ”๊ฐ€


์ƒ๊ฐ๐Ÿค”

 

2022 ์นด์นด์˜ค ๋ฌธ์ œ๋Š” ์‚ฌ์‹ค ๋‚ด๊ฐ€ ์‹œํ—˜ ์ณค์—ˆ๋˜ ์ฝ”ํ…Œ๋ผ ๋ฌธ์ œ๋ฅผ ๋ณด๋‹ˆ ๊ธฐ์–ต์ด ๋‚ฌ๋‹ค.

๊ทธ๋•Œ๊ทธ๋•Œ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅด๋‹ค๊ณ  ์—ญ์‹œ๋‚˜ ์ €๋ฒˆ๊ณผ๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ํ•ด๊ฒฐ ์ฝ”๋“œ๊ฐ€ ํƒ„์ƒํ•˜์˜€๋‹ค..

 

Level 1์ด๋ผ ๋‹จ์‹œ๊ฐ„์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges