์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - 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
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] ๊ฐ์ฅ ๋จผ ๋ ธ๋ (0) | 2022.02.03 |
---|---|
[programmers] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ - 2022 KAKAO BLIND RECRUITMENT (0) | 2022.01.18 |
[programmers] GROUP BY๋ฌธ - SQL ๊ณ ๋์ Kit (0) | 2022.01.17 |
[programmers] IS NULL๋ฌธ - SQL ๊ณ ๋์ Kit (0) | 2022.01.15 |
[programmers] SUM,MAX,MIN๋ฌธ - SQL ๊ณ ๋์ Kit (0) | 2022.01.15 |