[ Programmers 42578 ] 위장(Python)

uoayop·2021년 6월 7일
0

알고리즘 문제

목록 보기
94/103
post-thumbnail

문제

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

💦😓 우린 이걸 바바리맨이라고 부르기로 했어요 💦💦


문제 풀이

딕셔너리와 경우의 수를 이용해서 풀 수 있다.

0. 딕셔너리로 의상 종류 개수 세기

from collections import defaultdict

def solution(clothes):
    dct = defaultdict(int)
    for cloth, kinds in clothes:
        dct[kinds] += 1

key 값에 옷의 종류를 넣어서 개수를 체크해주었다.

종류개수
얼굴🎩 🕶 (2개)
상의👚 👕 🧥 (3개)
하의👖 🩳 🩲 (3개)

스파이가 위의 같은 옷을 가지고 있을 때,
변장 할 수 있는 경우의 수는 아래와 같다.

종류경우의 수
얼굴(안입음) / 🎩 / 🕶3가지
상의(안입음) / 👚 / 👕 / 🧥4가지
하의(안입음) / 👖 / 🩳 / 🩲4가지

옷의 종류 중 안입는 경우도 고려해줘야 한다.
그렇지만 [얼굴, 상의, 하의] 중 한가지라도 입어야 한다..! 🤓

따라서 전체 경우의 수인
(얼굴 개수 + 1) * (상의 개수 + 1) * (하의 개수 + 1)에서
아무것도 안입는 경우인 1가지 경우의 수를 빼주면 된다.

answer = 1
for k, v in dct.items():
    answer *= (v + 1)
print(answer-1)

코드

import sys
input = sys.stdin.readline

n = int(input())
length = list(map(int,input().rsplit()))
price = list(map(int,input().rsplit()))

answer = 0
min_price = price[0]
for i in range(n-1):
    min_price = min(min_price, price[i])
    answer += (length[i] * min_price)

print(answer)
    
profile
slow and steady wins the race 🐢

0개의 댓글