| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 그래프 탐색
- isalpha()
- isalnum()
- LSTM
- 우선순위 큐
- bfs
- Stack
- 동적 프로그래밍
- DP
- explainable recommendation
- 추천시스템
- find()
- Deque
- Algorithm
- 정렬
- knowledge
- 알고리즘
- isnumeric()
- 그래프
- Python
- 파이썬
- kg
- Knowledge graph
- Recommendation
- 백준
- 자료구조
- isdigit()
- 코테
- Dynamic Programming
- 프로그래머스
Archives
- Today
- Total
데린이 고인물되기
[TIL] 250630 프로그래머스 - 더 맵게 본문
반응형
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.
섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다.
Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요.
- scoville의 길이는 2 이상 1,000,000 이하입니다.
- K는 0 이상 1,000,000,000 이하입니다.
- scoville의 원소는 각각 0 이상 1,000,000 이하입니다.
- 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 return 합니다.
| scoville | K | return |
| [1, 2, 3, 9, 10, 12] | 7 | 2 |
- 스코빌 지수가 1인 음식과 2인 음식을 섞으면 음식의 스코빌 지수가 아래와 같이 됩니다.
새로운 음식의 스코빌 지수 = 1 + (2 * 2) = 5
가진 음식의 스코빌 지수 = [5, 3, 9, 10, 12] - 스코빌 지수가 3인 음식과 5인 음식을 섞으면 음식의 스코빌 지수가 아래와 같이 됩니다.
새로운 음식의 스코빌 지수 = 3 + (5 * 2) = 13
가진 음식의 스코빌 지수 = [13, 9, 10, 12]
모든 음식의 스코빌 지수가 7 이상이 되었고 이때 섞은 횟수는 2회입니다.
나의 답
def solution(scoville, K):
import heapq
heapq.heapify(scoville) # 리스트를 우선순위 힙으로
answer = 0
while scoville[0] < K:
if len(scoville) == 1: # 1개까지 가도 스코빌 지수가 안넘었으면
return -1
min1 = heapq.heappop(scoville) # k보다 작다는 제일 작은 수
min2 = heapq.heappop(scoville)
mix = min1 + min2*2
answer += 1
heapq.heappush(scoville, mix)
return answer
- 초반에 고민은 좀 했으나, 크게 어렵지 않게 풀었습니다
- 처음에는 for i in range(len(scoville)) 방식으로 접근하려고 했지만, for문 안에서 scoville 리스트를 계속 변경해야 하다 보니 문제 생길 여지가 있어 while 루프로 구현 방식을 바꿨습니다.
반응형
'Algorithm > 문제' 카테고리의 다른 글
| [TIL] 250916 - 프로그래머스 뉴스 클러스터링 (1) | 2025.09.16 |
|---|---|
| [TIL] 250911 - 프로그래머스 숫자의 표현 (0) | 2025.09.11 |
| [TIL] 250629 프로그래머스 - 큰 수 만들기 (0) | 2025.06.29 |
| [TIL] 250628 프로그래머스 - 전화번호 목록 (0) | 2025.06.28 |
| [TIL] 250627 프로그래머스 - 도둑질 (0) | 2025.06.28 |