์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
๋ฌธ์ ์ค๋ช
์คํ์ด๋ค์ ๋งค์ผ ๋ค๋ฅธ ์ท์ ์กฐํฉํ์ฌ ์ ์ด ์์ ์ ์์ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์คํ์ด๊ฐ ๊ฐ์ง ์ท์ด ์๋์ ๊ฐ๊ณ ์ค๋ ์คํ์ด๊ฐ ๋๊ทธ๋ ์๊ฒฝ, ๊ธด ์ฝํธ, ํ๋์ ํฐ์ ์ธ ๋ฅผ ์ ์๋ค๋ฉด ๋ค์๋ ์ ์ฒญ๋ฐ์ง๋ฅผ ์ถ๊ฐ๋ก ์ ๊ฑฐ๋ ๋๊ทธ๋ ์๊ฒฝ ๋์ ๊ฒ์ ์ ๊ธ๋ผ์ค๋ฅผ ์ฐฉ์ฉํ๊ฑฐ๋ ํด์ผ ํฉ๋๋ค.
์ข ๋ฅ, ์ด๋ฆ
์ผ๊ตด | ๋๊ทธ๋ ์๊ฒฝ, ๊ฒ์ ์ ๊ธ๋ผ์ค |
์์ | ํ๋์ ํฐ์ ์ธ |
ํ์ | ์ฒญ๋ฐ์ง |
๊ฒ์ท | ๊ธด ์ฝํธ |
์คํ์ด๊ฐ ๊ฐ์ง ์์๋ค์ด ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด clothes๊ฐ ์ฃผ์ด์ง ๋ ์๋ก ๋ค๋ฅธ ์ท์ ์กฐํฉ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- clothes์ ๊ฐ ํ์ [์์์ ์ด๋ฆ, ์์์ ์ข ๋ฅ]๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํ์ด๊ฐ ๊ฐ์ง ์์์ ์๋ 1๊ฐ ์ด์ 30๊ฐ ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์์์ ์กด์ฌํ์ง ์์ต๋๋ค.
- clothes์ ๋ชจ๋ ์์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๋ชจ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ธ ์์ฐ์์ด๊ณ ์ํ๋ฒณ ์๋ฌธ์ ๋๋ '_' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํ์ด๋ ํ๋ฃจ์ ์ต์ ํ ๊ฐ์ ์์์ ์ ์ต๋๋ค.
์ ์ถ๋ ฅ ์
clothes, return
[[yellow_hat, headgear], [blue_sunglasses, eyewear], [green_turban, headgear]] | 5 |
[[crow_mask, face], [blue_sunglasses, face], [smoky_makeup, face]] | 3 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1
headgear์ ํด๋นํ๋ ์์์ด yellow_hat, green_turban์ด๊ณ eyewear์ ํด๋นํ๋ ์์์ด blue_sunglasses์ด๋ฏ๋ก ์๋์ ๊ฐ์ด 5๊ฐ์ ์กฐํฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
1. yellow_hat 2. blue_sunglasses 3. green_turban 4. yellow_hat + blue_sunglasses 5. green_turban + blue_sunglasses
์์ #2
face์ ํด๋นํ๋ ์์์ด crow_mask, blue_sunglasses, smoky_makeup์ด๋ฏ๋ก ์๋์ ๊ฐ์ด 3๊ฐ์ ์กฐํฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
1. crow_mask 2. blue_sunglasses 3. smoky_makeup
import collections
def solution(clothes):
answer = 1
hash_cloth = collections.Counter([i[1] for i in clothes])
for i in hash_cloth:
answer *= (hash_cloth[i]+1)
return answer - 1
########### ๋ค๋ฅธ ํ์ด
# 2์ฐจ์ ๋ฆฌ์คํธ ํด์๋ก ๋ง๋ค๊ธฐ
def solution(clothes):
answer = 1
d = {}
for val, key in clothes:
# key๊ฐ ๊ฐ์ผ๋ฉด val ์ถ๊ฐ
if key in d.keys():
d[key].append(val)
# key์ val ํ ๋น
else:
d[key] = [val]
for val in d.values():
# ์กฐํฉ ๊ณ์ฐํ๊ธฐ ์ํด +1 ํด์ค ๊ฐ ๊ณฑํ๊ธฐ
answer *= (len(val)+1)
# ๋ง์ง๋ง์ ์๋ฌด๊ฒ๋ ์ฐฉ์ฉํ์ง ์์ ๊ฒฝ์ฐ์ ์ ๋นผ์ฃผ๊ธฐ
return answer - 1
# collections.Counter() ์ด์ฉ
from collections import Counter
def solution(clothes):
answer = 1
# ์ด์ฐจ์๋ฆฌ์คํธ clothes์์ clothes[:][0]์ value
# cloth[1] ํํ --> ['yellow_hat', 'headgear'][1]
kind = Counter([cloth[1] for cloth in clothes])
# {'headgear': 2, 'eyewear': 1}
for i in kind:
answer *= (kind[i] + 1)
answer -= 1
return answer
- counter ๋ชจ๋ ์ด์ฉํ๊ธฐ
- ์๋๋ฉด dict ์๋ฃํ ๋ง๋๋ ๋ฐฉ๋ฒ ์ต์ํด์ง๊ธฐ
- 2์ฐจ์ ๋ฆฌ์คํธ ํด์๋ก ๋ง๋ค๊ธฐ!!!
- keys(), values() ์ ์จ๋ณด๊ธฐ
'Algorithms > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
lv1. ์ ๊ท ์์ด๋ ์ถ์ฒ - ์ ๊ทํํ์ (0) | 2021.03.02 |
---|---|
ํด์ lv3. ๋ฒ ์คํธ์จ๋ฒ (0) | 2021.02.26 |
ํด์ lv2. ์ ํ๋ฒํธ ๋ชฉ๋ก (๋ฆฌ์คํธ vs ํด์) (1) | 2021.02.25 |
ํด์ - ์์ฃผํ์ง ๋ชปํ ์ ์ (zip ์๋ฃํ, collections ์๋ฃํ) (2) | 2021.02.23 |
Lv1. ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ - list index๋ผ๋ฆฌ ๋น๊ต, range ๋น๊ต, ์ฌ์ฉ ํ list ์ด๊ธฐํ (1) | 2021.02.22 |