- ์๋๋ก์ด๋์คํ๋์ค
- ์๋๋ก์ด๋
- ์๊ณ ๋ฆฌ์ฆ์คํฐ๋
- SWIFT
- ํ
- ํ์๋ฒ
- Heap
- androidstudio
- ์ฝ๋ฉํ ์คํธ
- ์๊ณ ๋ฆฌ์ฆ
- ํ๊ฒ๋๋ฒ
- ios
- ์์ฐ๊ธฐ์ด
- MyBatisUserGuide
- java
- ์ฑ๊ฐ๋ฐ
- programmers
- ๊ณ ๋์ KIT
- ๋์คํฌ์ปจํธ๋กค๋ฌ
- ์๋ฐ
- CannotResolveSymbol
- ์ค์ํํธ
- Android
- PriorityQueue
- iOS์ฑ๊ฐ๋ฐ
- ํ๋ก๊ทธ๋๋ฐํ ์คํธ
- ์ํ
- ์์ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ค๊ดํธ์์๋ฏธ
'๊ฐ๋ฐ'์๊ตญ ๐พ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ(Heap) ๋ ๋งต๊ฒ _ ์๋ฐJava ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ(Heap) ๋ ๋งต๊ฒ _ ์๋ฐJava
young_9 2020. 7. 15. 03:21๋์ด๋: Level 2
1. ๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/42626
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ ๋งต๊ฒ
๋งค์ด ๊ฒ์ ์ข์ํ๋ Leo๋ ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค๊ธฐ ์ํด Leo๋ ์ค์ฝ๋น ์ง์๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ ๊ฐ์ ์์์ ์๋์ ๊ฐ๏ฟฝ๏ฟฝ
programmers.co.kr
| ๋ฌธ์ ์ค๋ช
๋งค์ด ๊ฒ์ ์ข์ํ๋ 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ํ์ ๋๋ค.
2. ์๊ณ ๋ฆฌ์ฆ by Yoon
1. ์ค์ฝ๋น ์ง์๋ฅผ PriorityQueue์ ๋ฃ๋๋ค. (default: min Heap)
2. PriorityQueue๊ฐ ๋น ๋๊น์ง while๋ฌธ์ ๋๋ค.
2.1 PriorityQueue์์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ์ต์๊ฐ์ผ๋ก ์ ์ฅํ๋ค.
2.1.1 ๋ง์ฝ ์ต์๊ฐ์ด K๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฐ ๊ฒฝ์ฐ๋ ๋ฐ๋ก answer๋ฅผ returnํ๋ค.
2.1.2 K๋ณด๋ค๋ ์์ผ๋ PriorityQueue์ ์ฌ์ด์ฆ๊ฐ 1์ธ ๊ฒฝ์ฐ๋ ๋ ๊ฐ๋ฅผ ํฉ์น ์๊ฐ ์๊ธฐ ๋๋ฌธ์ -1์ return ํ๋ค.
(2.1์์ ์์์ ์์ธ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ์ผ๋, ์ด์ ์์ผ๋ฉด ๋๋ค!)
2.2 ์ค์ฝ๋น ์ง์๊ฐ ์ ์ผ ์์ ๋ ๊ฐ๋ฅผ ๋ฝ์ ๊ณต์๋๋ก ์์ด ๋ค์ ๋ฃ๋๋ค.
2.3 answer๋ฅผ ํ๋ ์ฆ๊ฐ ์ํจ๋ค.
3. ์์ค์ฝ๋
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
int min = 0;
PriorityQueue<Integer> scovilleList = new PriorityQueue<Integer>();
for(int i = 0; i < scoville.length; i++){
scovilleList.offer(scoville[i]);
}
while (!scovilleList.isEmpty()) {
min = scovilleList.peek();
if(min >= K) return answer;
else if(scovilleList.size() == 1) return -1;
int num1 = scovilleList.poll();
int num2 = scovilleList.poll();
int num = num1 + num2 * 2;
scovilleList.offer(num);
answer++;
}
return -1;
}
}
4. ๋๋์
๋ด๊ฐ ์ง ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ค์ผ๋ก ์์ธ ์ผ์ด์ค๋ค์ด ๋ง์์ ์ ๋ฅผ ๋จน์๋ค.. ๐ฅ
[Algo Rhythm๐บ๐]
๋ ์ง: 2020.07.13
'๊ฐ์ธ๊ณต๋ถ > Algo Rhythm๐บ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ(Heap) ๋์คํฌ ์ปจํธ๋กค๋ฌ _ ์๋ฐJava (0) | 2020.07.15 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํ(Heap) ์ด์ค์ฐ์ ์์ํ _ ์๋ฐJava (0) | 2020.07.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํด์(Hash) ์์ฅ _ ์๋ฐJava (0) | 2020.07.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ํ์ - ์นดํซ _ ์๋ฐJava (0) | 2020.07.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํด์(Hash) ์ ํ๋ฒํธ ๋ชฉ๋ก _ ์๋ฐJava (0) | 2020.07.10 |