DevYoon
[ํ๋ก๊ทธ๋๋จธ์ค] ์ด๋ชจํฐ์ฝ ํ ์ธํ์ฌ (Python) ๋ณธ๋ฌธ
link ๐ https://school.programmers.co.kr/learn/courses/30/lessons/150368
๐ฅ ์ ์ ๊ฐ ์ต๋ 100๋ช , ์ด๋ชจํฐ์ฝ์ด ์ต๋ 7๊ฐ๋ก ๋ฒ์๊ฐ ๊ทธ๋ฆฌ ํฌ์ง ์์ ์์ ํ์์ผ๋ก๋ ์๊ฐ์ด๊ณผ๊ฐ ๋์ง ์์๋ค.
๐ฅ ํ์ง๋ง ์ผ์คfor๋ฌธ์ ํ์ฉํ์ง ์๊ณ ๋ ํ ์ ์์ง ์์๊น...๐ค
from itertools import product
def solution(users, emoticons):
answer = [0, 0]
discount = [10, 20, 30, 40]
emo_len = len(emoticons)
# ์ค๋ณต ์์ด๋ก ๊ฒฝ์ฐ์ ์ ๊ตฌํ๊ธฐ
pro_list = list(product(discount, repeat=len(emoticons)))
for production in pro_list:
# ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
์ ์, ์ด ๋งค์ถ
emoticon_plus, sales = 0, 0
for user in users:
limit_rate, limit_money = user[0], user[1]
spent = 0
for idx in range(emo_len):
# ํ ์ธ์จ์ด ์ ์ ์ง์ ํ ์ธ์จ๋ณด๋ค ํฌ๋ฉด ๊ตฌ๋งค
if production[idx] >= limit_rate:
spent += int(emoticons[idx] - emoticons[idx]*(production[idx]/100))
# ์ด ์ฌ์ฉํ ๊ธ์ก์ด ์ ์ ์ง์ ์ด์ก ์ด์์ด๋ฉด
if spent >= limit_money:
# ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
emoticon_plus += 1
else:
# ์ด์ก ๋ฏธ๋ง์ด๋ฉด ๋งค์ถ์ ๋ํจ
sales += spent
# ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
์๊ฐ ๊ธฐ์กด ์ต๋๊ฐ๋ณด๋ค ๋ ๋ง์ผ๋ฉด
if emoticon_plus > answer[0]:
# ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
์, ์ด ๋งค์ถ ๋ชจ๋ ๊ต์ฒด
answer[0], answer[1] = emoticon_plus, sales
# ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
์๊ฐ ๊ธฐ์กด ์ต๋๊ฐ๊ณผ ๊ฐ๊ณ , ๋งค์ถ์ด ๋ ๋์ผ๋ฉด
elif emoticon_plus == answer[0] and sales > answer[1]:
# ์ด ๋งค์ถ๋ง ๊ต์ฒด
answer[1] = sales
return answer
product
- ํ์ด์ฌ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ itertools์ ์๋ ์ค๋ณต์์ด ๊ตฌํ๋ ํจ์
from itertools import permutations, combinations, product, combination_with_replacement
# ์์ด
permu_list = permutations(data, 5)
# ์กฐํฉ
comb_list = combinations(data, 5)
# ์ค๋ณต์์ด
product_list = product(data, repeat=5)
# ์ค๋ณต ์กฐํฉ
comb_rep_list = combinations_with_replacement(data, 5)