๋ฌธ์ ์ค๋ช
- ๋น์ ์ ํฐ์ผ๋ชฌ์ ์ก๊ธฐ ์ํ ์ค๋ ์ฌํ ๋์, ํ ๋ฐ์ฌ๋์ ์ฐ๊ตฌ์ค์ ๋์ฐฉํ์ต๋๋ค.
- ํ ๋ฐ์ฌ๋์ ๋น์ ์๊ฒ ์์ ์ ์ฐ๊ตฌ์ค์ ์๋ ์ด N ๋ง๋ฆฌ์ ํฐ์ผ๋ชฌ ์ค์์ N/2๋ง๋ฆฌ๋ฅผ ๊ฐ์ ธ๊ฐ๋ ์ข๋ค๊ณ ํ์ต๋๋ค.
- ํ ๋ฐ์ฌ๋ ์ฐ๊ตฌ์ค์ ํฐ์ผ๋ชฌ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ฒํธ๋ฅผ ๋ถ์ฌ ๊ตฌ๋ถํฉ๋๋ค.
- ๋ฐ๋ผ์ ๊ฐ์ ์ข ๋ฅ์ ํฐ์ผ๋ชฌ์ ๊ฐ์ ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด ์ฐ๊ตฌ์ค์ ์ด 4๋ง๋ฆฌ์ ํฐ์ผ๋ชฌ์ด ์๊ณ , ๊ฐ ํฐ์ผ๋ชฌ์ ์ข ๋ฅ ๋ฒํธ๊ฐ
[3๋ฒ, 1๋ฒ, 2๋ฒ, 3๋ฒ]
์ด๋ผ๋ฉด ์ด๋ 3๋ฒ ํฐ์ผ๋ชฌ ๋ ๋ง๋ฆฌ, 1๋ฒ ํฐ์ผ๋ชฌ ํ ๋ง๋ฆฌ, 2๋ฒ ํฐ์ผ๋ชฌ ํ ๋ง๋ฆฌ๊ฐ ์์์ ๋ํ๋ ๋๋ค.- ์ด๋, 4๋ง๋ฆฌ์ ํฐ์ผ๋ชฌ ์ค 2๋ง๋ฆฌ๋ฅผ ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด 6๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ฒซ ๋ฒ์งธ(3๋ฒ), ๋ ๋ฒ์งธ(1๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ์ฒซ ๋ฒ์งธ(3๋ฒ), ์ธ ๋ฒ์งธ(2๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ์ฒซ ๋ฒ์งธ(3๋ฒ), ๋ค ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ๋ ๋ฒ์งธ(1๋ฒ), ์ธ ๋ฒ์งธ(2๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ๋ ๋ฒ์งธ(1๋ฒ), ๋ค ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ์ธ ๋ฒ์งธ(2๋ฒ), ๋ค ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ์ด๋, ์ฒซ ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ๊ณผ ๋ค ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ํ ์ข ๋ฅ(3๋ฒ ํฐ์ผ๋ชฌ ๋ ๋ง๋ฆฌ)์ ํฐ์ผ๋ชฌ๋ง ๊ฐ์ง ์ ์์ง๋ง, ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ค์ ๋ชจ๋ ๋ ์ข ๋ฅ์ ํฐ์ผ๋ชฌ์ ๊ฐ์ง ์ ์์ต๋๋ค.
- ๋ฐ๋ผ์ ์ ์์์์ ๊ฐ์ง ์ ์๋ ํฐ์ผ๋ชฌ ์ข ๋ฅ ์์ ์ต๋๊ฐ์ 2๊ฐ ๋ฉ๋๋ค.
์
์ถ๋ ฅ ์
์
์ถ๋ ฅ ์ #1
์
์ถ๋ ฅ ์ #2
์
์ถ๋ ฅ ์ #3
Code : ๋ด๊บผ
๐ Logic
์ค๋ช
- ๋ด๊ฐ ๊ฐ์ ธ๊ฐ ์ ์๋ ๋ง๋ฆฌ ์ :
N/2
๊ณ์ฐ- ํ์ฌ ํฐ์ผ๋ชฌ์ ์ข ๋ฅ์ ์
X
๊ณ์ฐX
์N/2
์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ์ฌ ๊ฒฐ๊ณผ๊ฐ ๊ณ์ฐ
> code
def solution(ls):
return min(len(ls)//2, len(set(ls)))
Code : ๋ค๋ฅธ ์ฌ๋๊บผ
> code
์์
๋ฌธ์ ์ค๋ช
- ์๋ง์ ๋ง๋ผํค ์ ์๋ค์ด ๋ง๋ผํค์ ์ฐธ์ฌํ์์ต๋๋ค.
- ๋จ ํ ๋ช ์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์์ต๋๋ค.
- ๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด participant์ ์์ฃผํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด completion์ด ์ฃผ์ด์ง ๋, ์์ฃผํ์ง ๋ชปํ ์ ์์ ์ด๋ฆ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- ๋ง๋ผํค ๊ฒฝ๊ธฐ์ ์ฐธ์ฌํ ์ ์์ ์๋ 1๋ช ์ด์ 100,000๋ช ์ดํ์ ๋๋ค.
- completion์ ๊ธธ์ด๋ participant์ ๊ธธ์ด๋ณด๋ค 1 ์์ต๋๋ค.
- ์ฐธ๊ฐ์์ ์ด๋ฆ์ 1๊ฐ ์ด์ 20๊ฐ ์ดํ์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ฐธ๊ฐ์ ์ค์๋ ๋๋ช ์ด์ธ์ด ์์ ์ ์์ต๋๋ค.
์
์ถ๋ ฅ ์
์
์ถ๋ ฅ ์ #1
leo
๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.์
์ถ๋ ฅ ์ #2
vinko
๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.์
์ถ๋ ฅ ์ #3
mislav
๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ๋ ๋ช
์ด ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ํ ๋ช
๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ช
์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.Code : ๋ด๊บผ
> code 1
def solution(participant, completion):
# ๋๋ช
์ด์ธ์ ๊ณ ๋ คํ์ฌ ์ฐธ๊ฐ์์ ์์ฃผ์ list๋ฅผ ๊ฐ๊ฐ ์ ๋ ฌ
participant.sort()
completion.sort()
# ๋ฐ๋ณต๋ฌธ์ ํตํด
for i in range(len(completion)):
# ์์์๋ถํฐ ์์๋๋ก ๊ฐ list ์์๋ฅผ ๋น๊ต
# ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ๋ก ์์ฃผํ์ง ๋ชปํ ์ ์
if participant[i] != completion[i]:
return participant[i]
# ์ด ์ฝ๋๋ ์์ฃผํ์ง ๋ชปํ ์ ์๊ฐ ์ฌ๋ฌ ๋ช
์ผ ๋์๋ `error` ๋ฐ์ํ ๊ฒ์.
# ์ด ๋ฌธ์ ์์๋ ์๊ด ์์.
> code 2
def solution(participant, completion):
# `์ฐธ๊ฐ์ ์ด๋ฆ : ํด๋น ์ด๋ฆ์ ์ฐธ๊ฐ์ ์`์ ํํ๋ก ์ฌ์ฉํ ๋น dict ์์ฑ
dic = {}
# ์ฐธ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์ dic์์ ์ฐธ๊ฐ์ ์ด๋ฆ๋ณ ์ฐธ๊ฐ์ ์๋ฅผ ํ๋์ฉ ์นด์ดํธ
for i in participant:
dic[i] = dic.get(i, 0) + 1
# ์์ฃผ์ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์ dic์์ ์์ฃผ์ ์ด๋ฆ์ ํด๋นํ๋ ์ฐธ๊ฐ์ ์๋ฅผ ํ๋์ฉ ์ ๊ฑฐ
for j in completion:
dic[j] -= 1
# ์ฐธ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์ dic์์ ์ฐธ๊ฐ์ ์๊ฐ ๋จ์ ์๋ ์ฐธ๊ฐ์ ์ด๋ฆ์ ์ถ์ถ
# ์์ฃผํ์ง ๋ชปํ ์ฌ๋๋ง์ด ์ฐธ๊ฐ์ ์๊ฐ ๋จ์์๊ธฐ ๋๋ฌธ
for k in participant:
if dic[k] != 0:
return k
Code : ๋ค๋ฅธ ์ฌ๋๊บผ
> code
from collections import Counter
def solution(participant, completion):
answer = Counter(participant) - Counter(completion)
return list(answer.keys())[0]
๋ฌธ์ ์ค๋ช
- ์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ ์ค, ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธํ๋ ค ํฉ๋๋ค.
- ์ ํ๋ฒํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ๊ตฌ์กฐ๋ ์ ํ๋ฒํธ๋ ์์์ด์ ์ ํ๋ฒํธ์ ์ ๋์ฌ์ ๋๋ค.
- ๊ตฌ์กฐ๋ : 119
- ๋ฐ์ค์ : 97 674 223
- ์ง์์ : 11 9552 4421
- ์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ๋ฅผ ๋ด์ ๋ฐฐ์ด phone_book ์ด solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด๋ค ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉด false๋ฅผ ๊ทธ๋ ์ง ์์ผ๋ฉด true๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- phone_book์ ๊ธธ์ด๋ 1 ์ด์ 1,000,000 ์ดํ์ ๋๋ค.
- ๊ฐ ์ ํ๋ฒํธ์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ ํ๋ฒํธ๊ฐ ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
์
์ถ๋ ฅ ์
์
์ถ๋ ฅ ์ #1
์
์ถ๋ ฅ ์ #2
์
์ถ๋ ฅ ์ #3
Code : ๋ด๊บผ
๐ Logic
์ค๋ช
- ์ ํ๋ฒํธ๋ถ๋ฅผ ์ ๋ ฌํ๊ฒ ๋๋ฉด, ์ธ์ ํ 2๊ฐ์ฉ๋ง ๋น๊ตํ๋ฉด ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ์ง ๋ฐ๋ก ํ์ธ ๊ฐ๋ฅ
> code
def solution(phone_book):
phone_book.sort()
length = len(phone_book)
for i in range(length-1):
if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
return False
return True
Code : ๋ค๋ฅธ ์ฌ๋๊บผ
> code
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
๋ฌธ์ ์ค๋ช
- ์คํ์ด๋ค์ ๋งค์ผ ๋ค๋ฅธ ์ท์ ์กฐํฉํ์ฌ ์ ์ด ์์ ์ ์์ฅํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ์คํ์ด๊ฐ ๊ฐ์ง ์ท์ด ์๋์ ๊ฐ๊ณ ์ค๋ ์คํ์ด๊ฐ ๋๊ทธ๋ ์๊ฒฝ, ๊ธด ์ฝํธ, ํ๋์ ํฐ์ ์ธ ๋ฅผ ์ ์๋ค๋ฉด ๋ค์๋ ์ ์ฒญ๋ฐ์ง๋ฅผ ์ถ๊ฐ๋ก ์ ๊ฑฐ๋ ๋๊ทธ๋ ์๊ฒฝ ๋์ ๊ฒ์ ์ ๊ธ๋ผ์ค๋ฅผ ์ฐฉ์ฉํ๊ฑฐ๋ ํด์ผ ํฉ๋๋ค.
- ์คํ์ด๊ฐ ๊ฐ์ง ์์๋ค์ด ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด clothes๊ฐ ์ฃผ์ด์ง ๋ ์๋ก ๋ค๋ฅธ ์ท์ ์กฐํฉ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- clothes์ ๊ฐ ํ์ [์์์ ์ด๋ฆ, ์์์ ์ข ๋ฅ]๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํ์ด๊ฐ ๊ฐ์ง ์์์ ์๋ 1๊ฐ ์ด์ 30๊ฐ ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์์์ ์กด์ฌํ์ง ์์ต๋๋ค.
- clothes์ ๋ชจ๋ ์์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๋ชจ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ธ ์์ฐ์์ด๊ณ ์ํ๋ฒณ ์๋ฌธ์ ๋๋ '_' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํ์ด๋ ํ๋ฃจ์ ์ต์ ํ ๊ฐ์ ์์์ ์ ์ต๋๋ค.
์
์ถ๋ ฅ ์
์
์ถ๋ ฅ ์ #1
์
์ถ๋ ฅ ์ #2
Code : ๋ด๊บผ
๐ Logic
์ค๋ช
- ์ท์ ์ข ๋ฅ๋ณ ๊ฐ์๋ฅผ
dict
๋ก ํํ- ๊ฐ๊ฐ์ ์ข ๋ฅ์ ์ท์ ๋ํด ์ ์ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ์ด (ํด๋น ์ข ๋ฅ์ ์ท์ ๊ฐ์ + 1)
โ ์ ์ง ์๋ ๊ฒฝ์ฐ 1๊ฐ์ง๊น์ง ํฌํจ์์ผ์ผ ํ๋ฏ๋ก- ์ท์ ์กฐํฉํ ์ ์๋ ์ ์ฒด ๊ฒฝ์ฐ์ ์๋ ์์์ ๊ตฌํ ๊ฐ ์ข ๋ฅ์ ์ท๋ค์ ๋ํ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ๊ณฑํ ๊ฐ์์ ์ ๋ถ ์ ์ง ์๋ ๊ฒฝ์ฐ 1๊ฐ์ง๋ฅผ ์ ์ธํ๋ฉด ๋จ.
> code
import math
def solution(clothes):
answer = {}
for p in clothes:
answer[p[1]] = answer.get(p[1], 0) + 1
array = answer.values()
array = [i+1 for i in array]
return math.prod(array) -1
Code : ๋ค๋ฅธ ์ฌ๋๊บผ
> code
์์
๋ฌธ์ ์ค๋ช
- ์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค.
- ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ ๋ ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋ ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ๋ ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด genres์ ๋ ธ๋๋ณ ์ฌ์ ํ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด plays๊ฐ ์ฃผ์ด์ง ๋, ๋ฒ ์คํธ ์จ๋ฒ์ ๋ค์ด๊ฐ ๋ ธ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ์์๋๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์ฌํญ
- genres[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋์ ์ฅ๋ฅด์ ๋๋ค.
- plays[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋๊ฐ ์ฌ์๋ ํ์์ ๋๋ค.
- genres์ plays์ ๊ธธ์ด๋ ๊ฐ์ผ๋ฉฐ, ์ด๋ 1 ์ด์ 10,000 ์ดํ์ ๋๋ค.
- ์ฅ๋ฅด ์ข ๋ฅ๋ 100๊ฐ ๋ฏธ๋ง์ ๋๋ค.
- ์ฅ๋ฅด์ ์ํ ๊ณก์ด ํ๋๋ผ๋ฉด, ํ๋์ ๊ณก๋ง ์ ํํฉ๋๋ค.
- ๋ชจ๋ ์ฅ๋ฅด๋ ์ฌ์๋ ํ์๊ฐ ๋ค๋ฆ ๋๋ค.
์
์ถ๋ ฅ ์
classic ์ฅ๋ฅด๋ 1,450ํ ์ฌ์๋์์ผ๋ฉฐ, classic ๋ ธ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ณ ์ ๋ฒํธ 3: 800ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 0: 500ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 2: 150ํ ์ฌ์
pop ์ฅ๋ฅด๋ 3,100ํ ์ฌ์๋์์ผ๋ฉฐ, pop ๋ ธ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ณ ์ ๋ฒํธ 4: 2,500ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 1: 600ํ ์ฌ์
๋ฐ๋ผ์ pop ์ฅ๋ฅด์ [4, 1]๋ฒ ๋ ธ๋๋ฅผ ๋จผ์ , classic ์ฅ๋ฅด์ [3, 0]๋ฒ ๋ ธ๋๋ฅผ ๊ทธ๋ค์์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ์ต๋ ๋ ๊ฐ๊น์ง ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ฏ๋ก 2๋ฒ ๋ ธ๋๋ ์๋ก๋์ง ์์ต๋๋ค.
Code : ๋ด๊บผ
๐ Logic
์ค๋ช
- ๋ด๊ฐ ๊ฐ์ ธ๊ฐ ์ ์๋ ๋ง๋ฆฌ ์ :
N/2
๊ณ์ฐ- ํ์ฌ ํฐ์ผ๋ชฌ์ ์ข ๋ฅ์ ์
X
๊ณ์ฐX
์N/2
์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ์ฌ ๊ฒฐ๊ณผ๊ฐ ๊ณ์ฐ
> code
def solution(genres, plays):
# dic1 โ '์ฅ๋ฅด : ์ฌ์๊ณก ํฉ๊ณ" ๋ฅผ ๋ด์ dict ํ์์ผ๋ก ๋ง๋ฆ
length = len(genres)
dic1 = {}
for i in range(length):
dic1[genres[i]] = dic1.get(genres[i], 0) + plays[i]
print(dic1)
# dic2 โ '์ฅ๋ฅด : (์ฌ์๊ณก, ์ฌ์๊ณก์ idx)' ํํ์ tuple์ ๋ด์ dict๋ก ๋ง๋ฆ.
dic2 = {j:[] for j in genres}
for k in range(length):
dic2[genres[k]].append([plays[k],k])
print(dic2)
# dic3 โ '์ฅ๋ฅด๋ณ ์ฌ์๊ณก ํฉ๊ณ : (์ฌ์๊ณก, ์ฌ์๊ณก์ idx)' ํํ์ tuple์ ๋ด์ dict๋ก ๋ง๋ฆ
length2 = len(dic2)
dic3 = {l:[] for l in dic1.values()}
for i in range(length2):
dic3[list(dic1.values())[i]] = dic3.get(list(dic1.values())[i], 0) + list(dic2.values())[i]
print(dic3)
# dic3 โ ์์์ ๋ง๋ dict๋ฅผ '์ฅ๋ฅด๋ณ ์ฌ์๊ณก ํฉ๊ณ'๋ฅผ ๊ธฐ์ค์ผ๋ก ์ญ์ ์ ๋ ฌ
dic3 = sorted(dic3.items(), key=lambda x: x[0], reverse=True)
print(dic3)
result = []
for i in dic3:
# ํ ์ฅ๋ฅด ๋ด์์ ์ฌ์ํ์๋ ์ญ์์ผ๋ก, ๋์ผ ์ฌ์ํ์์ ๋ํด์๋ idx๋ฅผ ์์๋๋ก ์ ๋ ฌ
arr = sorted(i[1], key=lambda x: (-x[0],x[1]))
print(arr)
# ํ ์ฅ๋ฅด ๋ด์ ๊ณก์ด ํ๋๋ผ๋ฉด ๊ทธ๊ฒ๋ง ์ถ๊ฐ
if len(arr) == 1:
result.append(arr[0][1])
# ํ ์ฅ๋ฅด ๋ด์ ๊ณก์ด 2๊ฐ ์ด์์ด๋ผ๋ฉด 2๊ฐ๊น์ง๋ง ์ถ๊ฐ
else:
for j in range(2):
result.append(arr[j][1])
return result
Code : ๋ค๋ฅธ ์ฌ๋๊บผ
> code
def solution(genres, plays):
answer = []
d = {e:[] for e in set(genres)}
for e in zip(genres, plays, range(len(plays))):
d[e[0]].append([e[1] , e[2]])
genreSort =sorted(list(d.keys()), key= lambda x: sum( map(lambda y: y[0],d[x])), reverse = True)
for g in genreSort:
temp = [e[1] for e in sorted(d[g],key= lambda x: (x[0], -x[1]), reverse = True)]
answer += temp[:min(len(temp),2)]
return answer