[LeetCode] 1561. Maximum Number of Coins You Can Get

Updated:

Maximum Number of Coins You Can Get

3의 배수의 길이둜 λ˜μ–΄μžˆλŠ” int 둜 이루어진 λ¦¬μŠ€νŠΈκ°€ 주어지면

μˆœμ„œ 상관없이 λ¦¬μŠ€νŠΈμ—μ„œ 3 κ°œμ”© λˆμ„ 뽑은 λ’€ μΉœκ΅¬κ°€ κ°€μž₯ 큰 λˆμ„ κ°€μ Έκ°€κ³  κ·Έ λ‹€μŒμœΌλ‘œ 큰 λˆμ„ λ‚΄κ°€ κ°€μ Έκ°„λ‹€.

이 μž‘μ—…μ„ λ°˜λ³΅ν–ˆμ„ λ•Œ λ‚΄κ°€ κ°€μ Έκ°ˆ 수 μžˆλŠ” λˆμ€ μ΅œλŒ€ μ–Όλ§ˆμΈκ°€λ₯Ό κ΅¬ν•˜λ©΄ λœλ‹€.

μ²˜μŒμ—” λ¦¬μŠ€νŠΈμ—μ„œ Max, Max, Min 을 λ½‘μ•„μ„œ 두 번째 Max 값을 λ”ν•΄μ£ΌλŠ” λ°©μ‹μœΌλ‘œ 진행을 ν–ˆλ‹€.

ν•˜μ§€λ§Œ μ£Όμ–΄μ§€λŠ” 리슀트의 μ΅œλŒ€ κΈΈμ΄λŠ” 무렀 105 μ΄μ—ˆλ‹€. μ΅œλŒ€ 길이둜 μ£Όμ–΄μ‘Œμ„ κ²½μš°μ— 계속 Max, Max, Min 을 λ½‘λŠ”λ‹€λ‹ˆ..

μƒκ°λ§Œ 해도 μ†Œλ¦„μ΄ λ‹λŠ”λ‹€. κ·Έλž˜μ„œ 주어진 리슀트λ₯Ό λ¨Όμ € ν•œ 번 정렬을 ν•œ λ’€ queue 둜 λ§Œλ“€μ—ˆλ‹€.

그리고 pop, pop, popleft λ₯Ό ν•΄μ£Όμ–΄ 닡을 κ΅¬ν–ˆλ‹€.


from typing import List
from collections import deque

class Solution:
	def maxCoins(self, piles: List[int]) -> int:
		answer = 0
		queue = deque()
		queue.extend(sorted(piles))

		while queue:
			queue.pop()
			answer += queue.pop()
			queue.popleft()

		return answer

Categories:

Updated:

Leave a comment