[Python - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level2] ์œ„์žฅ

2021. 1. 19. 02:32ใ†๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

๋ฐ˜์‘ํ˜•
 

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

 

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

์ŠคํŒŒ์ด๋“ค์€ ๋งค์ผ ๋‹ค๋ฅธ ์˜ท์„ ์กฐํ•ฉํ•˜์—ฌ ์ž…์–ด ์ž์‹ ์„ ์œ„์žฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜ท์ด ์•„๋ž˜์™€ ๊ฐ™๊ณ  ์˜ค๋Š˜ ์ŠคํŒŒ์ด๊ฐ€ ๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ, ๊ธด ์ฝ”ํŠธ, ํŒŒ๋ž€์ƒ‰ ํ‹ฐ์…”์ธ ๋ฅผ ์ž…์—ˆ๋‹ค๋ฉด ๋‹ค์Œ๋‚ ์€ ์ฒญ๋ฐ”์ง€๋ฅผ ์ถ”๊ฐ€๋กœ ์ž…๊ฑฐ๋‚˜ ๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ ๋Œ€์‹  ๊ฒ€์ • ์„ ๊ธ€๋ผ์Šค๋ฅผ ์ฐฉ์šฉํ•˜๊ฑฐ๋‚˜ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ข…๋ฅ˜ ์ด๋ฆ„
์–ผ๊ตด ๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ, ๊ฒ€์ • ์„ ๊ธ€๋ผ์Šค
์ƒ์˜ ํŒŒ๋ž€์ƒ‰ ํ‹ฐ์…”์ธ 
ํ•˜์˜ ์ฒญ๋ฐ”์ง€
๊ฒ‰์˜ท ๊ธด ์ฝ”ํŠธ

์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜์ƒ๋“ค์ด ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด clothes๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์˜ท์˜ ์กฐํ•ฉ์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • clothes์˜ ๊ฐ ํ–‰์€ [์˜์ƒ์˜ ์ด๋ฆ„, ์˜์ƒ์˜ ์ข…๋ฅ˜]๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜์ƒ์˜ ์ˆ˜๋Š” 1๊ฐœ ์ด์ƒ 30๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์˜์ƒ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • clothes์˜ ๋ชจ๋“  ์›์†Œ๋Š” ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ด๊ณ  ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž ๋˜๋Š” '_' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ŠคํŒŒ์ด๋Š” ํ•˜๋ฃจ์— ์ตœ์†Œ ํ•œ ๊ฐœ์˜ ์˜์ƒ์€ ์ž…์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

ํ’€์ด ๊ณผ์ •

ํ•ด์‰ฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์œ„์—์„œ ํ’€์—ˆ๋˜ ์ „ํ™”๋ฒˆํ˜ธ ๋ฌธ์ œ๋Š” ํ•ด์‰ฌ๋ฅผ ๊ตณ์ด ์ด์šฉํ•ด์•ผ ํ•˜๋‚˜? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ์˜ท์˜ ํƒ€์ž…๋ณ„ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์–ด ์ˆœ์—ด์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋ฌธ์ œ์˜€๋‹ค. ๋‚˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ ์ค‘ defaultdict๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€์–ด๋ณด์•˜๋‹ค. 

์ผ๋ฐ˜ dictionary์™€ defaultdictionary์˜ ์ฐจ์ด๋Š” dictionary๋Š” ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด ์žˆ์ง€ ์•Š๋Š” ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์ง€๋งŒ, defaultdictionary๋Š” ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด ์žˆ์ง€ ์•Š๋Š” ํ‚ค์—ฌ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ  default๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

clothes ๋กœ for๋ฌธ์„ ๋Œ๋ ค clothes_dict์— ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์–ด์ฃผ์—ˆ๋‹ค. (dict - key๊ฐ’์€ ์˜ท์˜ type์œผ๋กœ ์ง€์ •)

๊ทธํ›„ clothes_dict์˜ value๋งŒํผ for๋ฌธ์„ ๋Œ๋ ค answer์— ๊ณฑํ•ด์ฃผ๋Š” ํ˜•์‹์œผ๋กœ ์ˆœ์—ด์„ ๊ตฌํ–ˆ๋‹ค. ์ˆœ์—ด์„ ์œ„ํ•ด answer ๋ฅผ 1 ๋”ํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— return ํ• ๋•Œ๋Š” answer -1 ์„ ํ•ด์ฃผ์—ˆ๋‹ค.

 

from collections import defaultdict


def solution(clothes):
    answer = 1
    clothes_dict = defaultdict(int)
    for c_name, c_type in clothes:
        clothes_dict[c_type] += 1
    for i in clothes_dict.values():
        answer *= (i + 1)
    return answer - 1


if __name__ == "__main__":
    print(solution([["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]))
    print(solution([["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]]))

 

 

 

๋ฐ˜์‘ํ˜•