Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ•ด์‹œ - ์œ„์žฅ (level.2)

๊ฐ์ž ๐Ÿฅ” 2021. 9. 9. 19:46
๋ฐ˜์‘ํ˜•

 

๋ฌธ์ œ๋งํฌ

https://programmers.co.kr/learn/courses/30/lessons/42578

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์œ„์žฅ

 

programmers.co.kr

 

๋‚˜์˜ํ’€์ด

  • (a์ข…๋ฅ˜์˜ ์˜ท ๊ฐœ์ˆ˜ x b์ข…๋ฅ˜์˜ ์˜ท ๊ฐœ์ˆ˜ x c์ข…๋ฅ˜)์˜ ์˜ท ๊ฐœ์ˆ˜ ๋กœ ๊ตฌํ–ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒํ•˜๊ฒŒ ๋˜๋ฉดabc ๋ชจ๋‘ ์ž…๊ฒŒ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋งŒ ๊ณ„์‚ฐ๋œ๋‹ค. ๋”ฐ๋ผ์„œ a์˜ ์˜ท์„๊ฑธ์น˜์ง€ ์•Š๋Š” ์˜ทx์˜ ์ข…๋ฅ˜๊ฐ€ ํ•œ๊ฐ€์ง€ ํฌํ•จ๋˜์–ด์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์•ผ a๋Š” ์•ˆ์ž…๊ณ  b์™€c๋งŒ์„ ์ž…๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊นŒ์ง€ ๊ณ„์‚ฐ๋œ๋‹ค.
    ๋”ฐ๋ผ์„œ {(a์ข…๋ฅ˜์˜ ์˜ท ๊ฐœ์ˆ˜ + 1) x  (b์ข…๋ฅ˜์˜ ์˜ท ๊ฐœ์ˆ˜ + 1)  x  (c์ข…๋ฅ˜์˜ ์˜ท ๊ฐœ์ˆ˜ + 1)} ๋กœ ๊ณ„์‚ฐํ•ด์•ผํ•œ๋‹ค. ์ด๊ฒƒ์„ ์ƒ๊ฐํ•ด๋‚ด๋Š”๋ฐ ์กฐ๊ธˆ ์‹œ๊ฐ„์ด ๊ฑฐ๋ ธ๋˜๊ฒƒ ๊ฐ™๋‹ค. (์›๋ž˜ ๊ฒฝ์šฐ์˜์ˆ˜ ๊ณ„์‚ฐ์— ์ข€ ์•ฝํ•˜๋‹คใ… ใ… )
  • ๋งˆ์ง€๋ง‰์— total -1 ์„ ์ง„ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” abc ์ค‘์—์„œ๋Š” ๊ผญ ํ•˜๋‚˜ ์ด์ƒ์„ ๊ฑธ์ณ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‘ ์˜ท์„ ๊ฑธ์น˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•œ๊ฐ€์ง€๋ฅผ ๋นผ์ค€๊ฒƒ์ด๋‹ค. 
def solution(clothes):

    dic = {}

    for cloth in clothes: #์ข…๋ฅ˜๋ณ„๋กœ dic์œผ๋กœ ๋ฌถ์–ด์ฃผ๊ธฐ
        if cloth[1] in dic:
            dic[cloth[1]].append(cloth[0])
        else:
            dic[cloth[1]] = [cloth[0]]

    total = 1 # ์ข…๋ฅ˜+1 = ์˜ทx๊ฒฝ์šฐ๊นŒ์ง€ ์ถ”๊ฐ€ํ•ด์„œ ๊ณ„์‚ฐ
    for d in dic:
        total *= len(dic[d])+1
    return total -1  #๋ชจ๋‘ ์˜ทx์ธ๊ฒฝ์šฐ ๋นผ์ค˜์•ผํ•จ

 

๋‹ค๋ฅธ์‚ฌ๋žŒ ํ’€์ด

https://programmers.co.kr/learn/courses/30/lessons/42578/solution_groups?language=python3&type=all 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

def solution(clothes):
    from collections import Counter
    from functools import reduce
    cnt = Counter([kind for name, kind in clothes])
    answer = reduce(lambda x, y: x*(y+1), cnt.values(), 1) - 1
    return answer

๋งŽ์€์‚ฌ๋žŒ๋“ค์ด Counter ์„ ์‚ฌ์šฉํ–ˆ๋‹ค. Counter ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํžˆ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ๋‚˜๋Š” itertools ํ•จ์ˆ˜ ํ™œ์šฉ๋„๊ฐ€ ๋‚ฎ๋‹ค ใ… ใ…  ์ด ํ•จ์ˆ˜ ํ™œ์šฉ๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋„๋ก ์ถ”๊ฐ€ ๊ณต๋ถ€๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ๊ฒ ๋‹ค.

๋ฐ˜์‘ํ˜•