[백준 - 1715/ java] 카드정렬하기 - 우선순위 큐

2024. 3. 18. 13:43·문제 풀이/백준 문제풀이
728x90
반응형
SMALL

 

필요 알고리즘 개념

 

  • 그리디
    • 일정한 규칙을 정해 매번 해당 규칙을 적용하다보면 답이 나오는 알고리즘
  • 우선순위 큐
    • 우선순위 큐는 자동으로 수가 우선순위대로 정렬된다. 
    • 우선 순위 큐를 사용해 mini heap을 사용

 

풀이
  • 위 문제의 핵심은 연산 과정의 중간 결과가 다시 연산에 사용된다는 것
  • 매번 가장 작은 2개를 뽑아 더해주면 된다

 

백준문제의 예시

1. 3개의 수를 받는다.

10 / 20 / 40 

 

2. 연산 시작

10+20 =30

30을 합계에 포함한다. 

중간 연산의 30을 다시 큐에 넣어준다.

30/40

 

3. 두 번째 연산

30+40

70을 합계에 포함한다.

결과 = 100

 

 

코드구현
import java.util.PriorityQueue;
import java.util.Scanner;

public class QueP1715 {
    static int X;
    static int sum;
    static PriorityQueue<Integer> pq;
    public static void main(String[] args) {


        Scanner sc = new Scanner(System.in);
        X = sc.nextInt();
        pq = new PriorityQueue();

        for (int i = 0; i < X; i++) {
            pq.offer(sc.nextInt());
        }

        while (pq.size() > 1) {
            int tmp =pq.poll()+pq.poll();
            sum += tmp;
            pq.add(tmp);
        }
        System.out.println(sum);

    }
}

 

결과

 

BuffredReader를 사용하여 값을 입력받았을 때 결과

 

확연한 차이가 있음을 알 수 있다. 

입력받는 수가 많을 경우에는 BuffredReader를 사용하자!

728x90
반응형
SMALL

'문제 풀이 > 백준 문제풀이' 카테고리의 다른 글

[백준12789-자바/우선순위큐] 도키도키 간식드리미  (0) 2024.03.20
[백준 1427 - 자바/ 선택정렬] 소트인사이드  (0) 2024.03.20
[백준 2164-Java ] 카드2 + Queue에 대한 설명  (0) 2024.03.17
[백준 - 11659/ Java] 구간합 구하기  (4) 2024.03.12
[백준 - 2178/ 자바(Java)] 미로 탐색 문제 BFS로 해결하기  (1) 2024.02.28
'문제 풀이/백준 문제풀이' 카테고리의 다른 글
  • [백준12789-자바/우선순위큐] 도키도키 간식드리미
  • [백준 1427 - 자바/ 선택정렬] 소트인사이드
  • [백준 2164-Java ] 카드2 + Queue에 대한 설명
  • [백준 - 11659/ Java] 구간합 구하기
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (325)
      • 면접 준비 (22)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      리눅스마스터2급정리
      리눅스
      프로그래머스
      레디스
      JS
      redis
      자바
      JSP
      스프링프레임워크
      자바 알고리즘
      백준
      java
      springsecurity
      CSS
      자바스크립트
      spring redis
      jsp기초
      Spring
      Springframework
      자바기초
      Til
      jsp request
      자바 반복문
      자바 면접
      JavaScript
      redis 채팅
      자바 면접질문
      HTML
      Spring Data Redis
      리눅스마스터2급
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [백준 - 1715/ java] 카드정렬하기 - 우선순위 큐
    상단으로

    티스토리툴바