프로그래머스) - 더 맵게 (우선순위 큐)

2020. 4. 4. 19:49·🖥️ 컴퓨터공학 🖥️/알고리즘
반응형

문제 출처 입니다.

https://programmers.co.kr/learn/courses/30/lessons/42626

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

나의 풀이

몇일동안 잡고 끙끙대면서 노력했지만 아무래도 왜 틀렸는데 이해가 안된다. 왜 틀렸는지 언젠가는 발견할 수 있으면 좋겠다. 

(↓오답 풀이입니다....ㅠㅠ)

 

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
import java.util.*;
 
class Test {
    public int solution(int[] scoville, int K) {
         
        int answer=0;
        int result=0;
       
        while(true){ 
            Arrays.sort(scoville);
            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]);}
                scoville = Arrays.copyOf(scoville, scoville.length-1);
                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){
             pq.offer(i);
         }
         while(pq.peek()<K){
             if(pq.size()==1){
                 return -1;
             }
             else{
                 a=pq.poll();
                 b=pq.poll();
                 pq.offer(a+(b*2));
                 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
import java.util.*;
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
'🖥️ 컴퓨터공학 🖥️/알고리즘' 카테고리의 다른 글
  • 백준) - 1로 만들기(재귀함수) / C++
  • 백준) - 1로 만들기 (재귀함수) / JAVA
  • 개인) - 단순선택을 이용한 알고리즘 정렬
  • 프로그래머스) - 탑(Stack/Queue)
공대생 배기웅
공대생 배기웅
군노답 미필 공대생 배기웅의 대학생활을 갈아 넣은 블로그
    반응형
  • 공대생 배기웅
    글쓰는공대생의 IT블로그
    공대생 배기웅
  • 전체
    오늘
    어제
    • 분류 전체보기 (166)
      • 🖊️ 공대생 글쓰기 🖊️ (17)
        • 공대생 회고록 (4)
        • 공대생의 끄적끄적 (4)
        • 슬기로운 공대생활 (9)
        • 사회초년생의 업무일기 (0)
      • 📈 산업공학 📈 (14)
        • 금융, 파생상품 (13)
        • 통계 (0)
        • 재무회계 (1)
      • 🖥️ 컴퓨터공학 🖥️ (92)
        • 머신러닝, 딥러닝 (12)
        • 텐서플로우, 케라스 (1)
        • 알고리즘 (24)
        • 웹 (5)
        • Python (3)
        • C | C++ (23)
        • Java (15)
        • 코드 에러 모음집 (9)
      • 😙 취미, 교양 😙 (2)
        • 영어공부 (1)
        • 일본어회화 공부 (1)
      • 🔍 정보 공유 🔍 (38)
        • 대학생 외부활동 정보 (2)
        • 개발자관련 정보 (3)
        • 대입 논술 입시자료 정보 (22)
        • 프로그램 세팅 (11)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • [공지] 글쓰는 공대생입니다 😃
  • 인기 글

  • 태그

    무작위 변수
    acmicpc
    이클립스
    자바
    OOP
    알고리즘
    객체지향
    스캐너
    프로그래머스
    프랜드함수
    equals프레임워크
    경제성공학
    Java
    C++
    Operator
    예외
    조작자
    재귀함수
    데이터베이스
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
공대생 배기웅
프로그래머스) - 더 맵게 (우선순위 큐)
상단으로

티스토리툴바