티스토리 뷰
반응형
안 매운 음식들을 섞어서 매운 음식으로 만들건데
총 몇 번 섞어야 하는지 구하는 문제
문제의 조건
1. 음식들의 맵기를 담은 배열 scoville, 기준이 되는 스코빌 지수 K가 주어짐
2. scoville 원소들이 K 이상 되어야 함
3. 새로운 음식을 만드는 공식은
이렇다.
가장 덜 매운 두가지를 뽑아서 위의 공식으로 섞는다.
4. 모든 음식을 K 이상으로 만들 수 없으면 -1 리턴 (이 예외처리를 안 해서 또 시간 날림 ㅠ.ㅠ 문제를 똑바로 읽읍시다...)
5. 가장 덜 매운 음식의 지수가 최소 K 이상 되려면 몇 번 섞어야 하는지 구해서 리턴하기
원소 하나하나 복사해서 set으로 만든다고 뻘짓했는데 우선순위 큐로 쉽게 해결할 수 있었던 문제...
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> scoville, int K) {
//우선순위 큐 만듦
priority_queue<int, vector<int>, greater<int>> newScovilles(scoville.begin(), scoville.end());
int newScoville = 0;
int answer = 0;
//큐에 조합한 scoville이 1개 남을 때까지 반복
while (1 < newScovilles.size() && K > newScovilles.top())
{
//큐에서 첫번째랑 두번째 원소 추출
int first = newScovilles.top();
newScovilles.pop();
int second = newScovilles.top();
newScovilles.pop();
//새 scoville 계산 후 큐에 삽입
newScoville = first + (second * 2);
newScovilles.push(newScoville);
answer++;
}
//만약 큐의 첫번째 원소가 K보다 작으면 -1 리턴
if (K > newScovilles.top())
return -1;
return answer;
}
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
[C++] 프로그래머스 행렬 테두리 회전하기 풀이 (0) | 2021.10.12 |
---|---|
[C++] 프로그래머스 짝지어 제거하기 풀이 (0) | 2021.10.11 |
[C++] 프로그래머스 기능개발 풀이 (0) | 2021.10.11 |
[C++] 프로그래머스 조이스틱 풀이 (0) | 2021.10.10 |
[C++] 프로그래머스 카카오프렌즈 컬러링북 풀이 (BFS) (0) | 2021.10.09 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- 깊이우선탐색
- c++
- 문제풀이
- greedy
- BFS
- 캐나다생활
- 기초
- 애플
- 다이나믹프로그래밍
- hackerrank
- 너비우선탐색
- 코딩공부
- c언어
- 그리디
- 해커랭크
- DFS
- 백준
- 프로그래머스
- 영어공부
- 컴퓨터사이언스
- 컴퓨터
- 컴퓨터공부
- 아이패드
- 하드웨어
- 캐나다
- C언어기초
- dp
- 스위프트플레이그라운드
- 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함