# ๊ด๋ฌผ ์บ๊ธฐ # 172927 # lv2 # Python
# ๋ฌธ์
๋ง์ธ์ ๊ณก๊ดญ์ด๋ก ๊ด์ฐ์์ ๊ด์์ ์บ๋ ค๊ณ ํฉ๋๋ค. ๋ง์ธ์ ๋ค์ด์๋ชฌ๋ ๊ณก๊ดญ์ด, ์ฒ ๊ณก๊ดญ์ด, ๋ ๊ณก๊ดญ์ด๋ฅผ ๊ฐ๊ฐ 0๊ฐ์์ 5๊ฐ๊น์ง ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๊ณก๊ดญ์ด๋ก ๊ด๋ฌผ์ ์บ ๋๋ ํผ๋ก๋๊ฐ ์๋ชจ๋ฉ๋๋ค. ๊ฐ ๊ณก๊ดญ์ด๋ก ๊ด๋ฌผ์ ์บ ๋์ ํผ๋ก๋๋ ์๋ ํ์ ๊ฐ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฒ ๊ณก๊ดญ์ด๋ ๋ค์ด์๋ชฌ๋๋ฅผ ์บ ๋ ํผ๋ก๋ 5๊ฐ ์๋ชจ๋๋ฉฐ, ์ฒ ๊ณผ ๋์ ์บ๋๋ ํผ๋ก๋๊ฐ 1์ฉ ์๋ชจ๋ฉ๋๋ค. ๊ฐ ๊ณก๊ดญ์ด๋ ์ข
๋ฅ์ ์๊ด์์ด ๊ด๋ฌผ 5๊ฐ๋ฅผ ์บ ํ์๋ ๋ ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ง์ธ์ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ์งํค๋ฉด์ ์ต์ํ์ ํผ๋ก๋๋ก ๊ด๋ฌผ์ ์บ๋ ค๊ณ ํฉ๋๋ค.
- ์ฌ์ฉํ ์ ์๋ ๊ณก๊ดญ์ด ์ค ์๋ฌด๊ฑฐ๋ ํ๋๋ฅผ ์ ํํด ๊ด๋ฌผ์ ์บก๋๋ค. (๋จ ์ต์๊ฐ ๋๊ฒ!! -> ์ ๋ ฌ๋ก..?)
- ํ ๋ฒ ์ฌ์ฉํ๊ธฐ ์์ํ ๊ณก๊ดญ์ด๋ ์ฌ์ฉํ ์ ์์ ๋๊น์ง ์ฌ์ฉํฉ๋๋ค.
- ๊ด๋ฌผ์ ์ฃผ์ด์ง ์์๋๋ก๋ง ์บ ์ ์์ต๋๋ค.
- ๊ด์ฐ์ ์๋ ๋ชจ๋ ๊ด๋ฌผ์ ์บ๊ฑฐ๋, ๋ ์ฌ์ฉํ ๊ณก๊ดญ์ด๊ฐ ์์ ๋๊น์ง ๊ด๋ฌผ์ ์บก๋๋ค.
์ฆ, ๊ณก๊ดญ์ด๋ฅผ ํ๋ ์ ํํด์ ๊ด๋ฌผ 5๊ฐ๋ฅผ ์ฐ์์ผ๋ก ์บ๊ณ , ๋ค์ ๊ณก๊ดญ์ด๋ฅผ ์ ํํด์ ๊ด๋ฌผ 5๊ฐ๋ฅผ ์ฐ์์ผ๋ก ์บ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉฐ, ๋ ์ฌ์ฉํ ๊ณก๊ดญ์ด๊ฐ ์๊ฑฐ๋ ๊ด์ฐ์ ์๋ ๋ชจ๋ ๊ด๋ฌผ์ ์บ ๋๊น์ง ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด ๋ฉ๋๋ค.
๋ง์ธ์ด ๊ฐ๊ณ ์๋ ๊ณก๊ดญ์ด์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด picks์ ๊ด๋ฌผ๋ค์ ์์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด minerals๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ง์ธ์ด ์์
์ ๋๋ด๊ธฐ๊น์ง ํ์ํ ์ต์ํ์ ํผ๋ก๋๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
# ์ ํ์ฌํญ
- picks๋ [dia, iron, stone]๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- 0 ≤ dia, iron, stone ≤ 5
- dia๋ ๋ค์ด์๋ชฌ๋ ๊ณก๊ดญ์ด์ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- iron์ ์ฒ ๊ณก๊ดญ์ด์ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- stone์ ๋ ๊ณก๊ดญ์ด์ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- ๊ณก๊ดญ์ด๋ ์ต์ 1๊ฐ ์ด์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- 5 ≤ minerals์ ๊ธธ์ด ≤ 50
- minerals๋ ๋ค์ 3๊ฐ์ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ๊ฐ๊ฐ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- diamond : ๋ค์ด์๋ชฌ๋
- iron : ์ฒ
- stone : ๋
# ํ์ด
# ๋ค์ด์ ๊ณก๊ดญ์ด : ๋ชจ๋ ๊ด์ ํผ๋ก๋ 1
# ์ฒ ๊ณก๊ดญ์ด : ๋ค์ด์ -> 5, ์ฒ -> 1, ๋ -> 1
# ๋ ๊ณก๊ดญ์ด : ๋ค์ด์ -> 25, ์ฒ -> 5, ๋ -> 1
# [0, 1, 1] -> ๋ค์ด์ ๊ณก๊ดญ์ด 0๊ฐ, ์ฒ ๊ณก๊ดญ์ด 1๊ฐ , ๋ ๊ณก๊ดญ์ด 1๊ฐ
def solution(picks, minerals):
# <์์ด๋์ด>
# ํ ๊ณก๊ดญ์ด ๋น ์ต๋ 5๊ฐ์ ๊ด๋ฌผ ์ฑ์ทจ ๊ฐ๋ฅ
# 1. ์ฑ์ทจ ๊ฐ๋ฅํ ๊ด๋ฌผ ๊ฐ์๋งํผ ๋จผ์ ์ฌ๋ผ์ด์ฑ(5๊ฐ ๋จ์๋ก).
# 2. 5๊ฐ์ฉ ๊ด๋ฌผ์ ๋ถ๋ฅ ํ ๊ด๋ฌผ ๋ณ ๊ฐ์ ๋ด๋ถ ๋ฆฌ์คํธํ.
# 3. ๊ณก๊ดญ์ด ๊ฐ์๋น ์ปค๋ฒ๊ฐ๋ฅํ ๊ด์ ๊ฐ์ * (๊ฐ ๊ด๋ฌผ ๋น ๊ณก๊ดญ์ด ํผ๋ก๋)
# 3. ์ต์ข
answer์ ์ต์ข
ํผ๋ก๋ ๋์ ํฉ
answer = 0
minerals = minerals[:sum(picks) * 5] # ๊ด๋ฌผ ๋ฐฐ์ด์ 5๊ฐ ๋จ์๋ก ์ฌ๋ผ์ด์ฑ.
new_list = [[0,0,0] for i in range((len(minerals) // 5 + 1))] # ๋จ์(5) ๋น ๊ด๋ฌผ ๊ฐ์
for i in range(len(minerals)):
if minerals[i] == 'diamond':
new_list[i//5][0] += 1
elif minerals[i] == 'iron':
new_list[i//5][1] += 1
elif minerals[i] == 'stone':
new_list[i//5][2] += 1
new_list.sort(key=lambda x:(-x[0],-x[1],-x[2])) # ์์์ ์๊ด์์ด ๋ค์ด์๋ชฌ๋, ์ฒ , ๋ ์์ผ๋ก ์ ๋ ฌ.
print(new_list)
# ex. [[3, 2, 0], [1, 1, 1]]
# 0๋ฒ์งธ ์ธ๋ฑ์ค ~ 4๋ฒ์งธ ์ธ๋ฑ์ค : ๋ค์ด์ 3, ์ฒ 2, ๋ 0
# 5๋ฒ์งธ ~ 9๋ฒ์งธ ์ธ๋ฑ์ค : ๋ค์ด์ 1, ์ฒ 1, ๋ 1
for i in new_list:
dia_, iron_, stone_ = i
# ๊ณก๊ดญ์ด์ ๊ฐ์ & ์ธ๋ฑ์ค(๋ค์ด์, ์ฒ , ๋ ์)
for j in range(len(picks)): # ๋ค์ด์ ๊ณก๊ดญ์ด
if picks[j] > 0 and j == 0:
picks[j] -= 1 # ์ฌ์ฉํ์ผ๋ฉด ํ๋๋ฅผ ๋บ.
answer += dia_ + iron_ + stone_ # ๊ณก๊ดญ์ด ํ๋๋ฅผ ์ฌ์ฉํ์ผ๋ฉด, new_list์ ์์๋ค ๊ฐ์๋งํผ ๋์ ํฉ.
break
elif picks[j] > 0 and j == 1: # ์ฒ ๊ณก๊ดญ์ด
picks[j] -= 1
answer += 5 * dia_ + iron_ + stone_
break
elif picks[j] > 0 and j == 2: # ๋ ๊ณก๊ดญ์ด
picks[j] -= 1
answer += 25 * dia_ + 5 * iron_ + stone_
break
return answer
์ฐธ๊ณ )
https://geunuk.tistory.com/485
[ํ๋ก๊ทธ๋๋จธ์ค] / [Level 2] / [Python] ๊ด๋ฌผ ์บ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/172927 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง
geunuk.tistory.com