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
'Algorithm & SQL > BAEKJOON' 카테고리의 다른 글
백준 JAVA 14425 문자열 집합 (0) | 2022.08.03 |
---|---|
백준 JAVA 14235 크리스마스 선물 (0) | 2022.08.02 |
백준 JAVA 11286 절댓값 힙 (0) | 2022.08.02 |
백준 JAVA 1715 카드 정렬하기 (0) | 2022.08.01 |
백준 JAVA 2075 N번째 큰수 (0) | 2022.08.01 |
댓글