본문 바로가기
Algorithm & SQL/BAEKJOON

백준 JAVA 15903 카드 합체 놀이

by YoonJong 2022. 8. 2.
728x90

 

Scanner 풀이

package BAEKJOON.Silver.Ⅰ;

import java.util.PriorityQueue;
import java.util.Scanner;

public class NO15903_2 {

    static PriorityQueue<Long> Q = new PriorityQueue<>();

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();

        for (int i = 0; i < n; i++) {
            Q.offer(sc.nextLong());
        }
        while (m > 0) {
            long sum = Q.poll();
            sum += Q.poll();

            Q.offer(sum);
            Q.offer(sum);

            m--;
        }

        long answer = 0;
        while (!Q.isEmpty()) {
            answer += Q.poll();
        }

        System.out.println(answer);
    }
}

BufferedReader 풀이 

백준 예제 입력에 따라 사용법이 다르다는 것을 배웠다.

예로, 한줄에 2가지 이상을 입력받아야 할때는 , 배열로 받은 후 split을 통해 따로 나눠줘야 한다.

String [] t = br.readLine().split(" ");

int n = Integer.parseInt(t[0]);
int m = Integer.parseInt(t[1]);

 

package BAEKJOON.Silver.Ⅰ;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.Scanner;

public class NO15903 {

    static PriorityQueue<Long> Q = new PriorityQueue<>();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        //배열로 받은 split 을 통해 빈칸기준으로 나눈다.
        String [] t = br.readLine().split(" ");

        // 첫번째 값은 n , 두번째 값은 m 
        int n = Integer.parseInt(t[0]);
        int m = Integer.parseInt(t[1]);

        // n 만큼의 입력값 또한 배열로 받은 후 빈칸으로 구분해준다.
        String [] arr = br.readLine().split(" ");

        for (int i = 0; i < n; i++) {
            // Q에 배열에 있는 값을 넣어준다.
            Q.offer((long) Integer.parseInt(arr[i]));
        }
        while (m > 0) {
            // 자동내림차순정렬로 인해 순서대로 2개씩 더해준다
            long sum = Q.poll();
            sum += Q.poll();
            // 더한 값 2번 다시 추가시켜준다.
            Q.offer(sum);
            Q.offer(sum);

            m--;
        }

        long answer = 0;
        while (!Q.isEmpty()) {
            answer += Q.poll();
        }

        System.out.println(answer);
    }
}
728x90

댓글