[D3] 코딩 토너먼트1 - 8673
성능 요약
메모리: 96,692 KB, 시간: 314 ms, 코드길이: 843 Bytes
제출 일자
2023-11-05 19:35
출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do
import java.util.*;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int tc = 1; tc <= T; tc++) {
int k = (int)Math.pow(2,sc.nextInt());
int sum = 0;
Queue<Integer> q = new LinkedList<>();
for(int i =0; i < k; i++){
q.offer(sc.nextInt());
}
while( k != 1){
for(int i = 0; i < k/2; i++){
int a = q.poll();
int b = q.poll();
int max = Math.max(a,b);
int min = Math.min(a,b);
q.offer(max);
sum += max - min;
}
k/= 2;
}
System.out.println("#" + tc + " " + sum);
}
}
}
배열을 이용해서도 풀이가 가능하다.
import java.util.*;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int tc = 1; tc <= T; tc++) {
int k = (int)Math.pow(2,sc.nextInt());
int [] a= new int[k];
for(int i = 0; i < k; i++){
a[i] = sc.nextInt();
}
int sum = 0;
while( k > 0 ){
for(int i = 0; i < k / 2; i++){
int num1 = a[i*2];
int num2 = a[i*2+1];
sum += Math.abs(num1 - num2);
a[i] = Math.max(num1, num2);
}
k /= 2;
}
System.out.println("#" + tc + " " + sum);
}
}
}
'알고리즘 - SWEA > D3' 카테고리의 다른 글
[SW expert Academy] SWEA 7102번 준홍이의 카드놀이 자바(Java) (0) | 2023.11.05 |
---|---|
[SW expert Academy] SWEA 6958번 동철이의 프로그래밍 대회 자바(Java) (0) | 2023.11.05 |
[SW expert Academy] SWEA 4579번 세상의 모든 팰린드롬 2 자바(Java) (0) | 2023.11.05 |
[SW expert Academy] SWEA 5603번 건초더미 자바(Java) (0) | 2023.11.05 |
[SW expert Academy] SWEA 5162번 두가지 빵의 딜레마 자바(Java) (0) | 2023.11.05 |