반응형
문제 출처 입니다.
https://programmers.co.kr/learn/courses/30/lessons/42626
나의 풀이
몇일동안 잡고 끙끙대면서 노력했지만 아무래도 왜 틀렸는데 이해가 안된다. 왜 틀렸는지 언젠가는 발견할 수 있으면 좋겠다.
(↓오답 풀이입니다....ㅠㅠ)
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
31
32
|
class Test {
public int solution(int[] scoville, int K) {
int answer=0;
int result=0;
while(true){
result=scoville[0]+(scoville[1]*2);
answer++;
System.out.println("result :"+result);
for(int i=0;i<scoville.length;i++){System.out.println("원래의 스코빌["+i+"]"+scoville[i]);}
if(result<K){
for(int i=0;i<scoville.length-1;i++){
scoville[i]=scoville[i+1];
}
scoville[0]=result;
for(int j=0;j<scoville.length;j++){System.out.println("array전의 스코빌["+j+"]"+scoville[j]);}
for(int i=0;i<scoville.length;i++){System.out.println("array이후의 스코빌["+i+"]"+scoville[i]);}
System.out.println("answer :"+answer);
continue;
}else if (scoville.length==1) answer=-1;
else if(result>=K) System.out.println("끝이다~~"); break;
}
return answer;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
답지 풀이
다른 사람들의 풀이를 보니 우선순위 큐(Priority Queue) 정렬로 많이 풀었다.
우선순위 큐 정렬 풀이
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
|
import java.util.PriorityQueue;
/**
*
* @author HEESOO
*
*/
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
int a,b;
PriorityQueue<Integer> pq=new PriorityQueue<>();
for(int i:scoville){
}
return -1;
}
else{
answer++;
}
}
return answer;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
class Solution {
public int solution(int[] scoville, int K) {
PriorityQueue<Integer> q = new PriorityQueue<>();
for(int i = 0; i < scoville.length; i++)
q.add(scoville[i]);
int count = 0;
while(q.size() > 1 && q.peek() < K){
int weakHot = q.poll();
int secondWeakHot = q.poll();
int mixHot = weakHot + (secondWeakHot * 2);
q.add(mixHot);
count++;
}
if(q.size() <= 1 && q.peek() < K)
count = -1;
return count;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
728x90
반응형
'💻 개인공부 💻 > 알고리즘' 카테고리의 다른 글
백준) - 1로 만들기(재귀함수) / C++ (0) | 2020.04.13 |
---|---|
백준) - 1로 만들기 (재귀함수) / JAVA (0) | 2020.04.13 |
개인) - 단순선택을 이용한 알고리즘 정렬 (0) | 2020.04.04 |
프로그래머스) - 탑(Stack/Queue) (0) | 2020.04.01 |
프로그래머스) - 완주하지 못한 선수 (0) | 2020.03.10 |