https://www.acmicpc.net/problem/15903
15903번: 카드 합체 놀이
첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,
www.acmicpc.net
문제
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
long arr[] = new long[n];
st = new StringTokenizer(br.readLine(), " ");
for(int i=0;i<n;i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
for(int i=0;i<m;i++) {
Arrays.sort(arr);
long k = arr[0] + arr[1];
arr[0] = arr[1] = k;
}
long result=0;
for(int i=0;i<n;i++) {
result += arr[i];
}
bw.write(""+result); bw.flush();
}
}
해결방법
입력받은 카드 값을 정렬하여 작은 값으로 합체를 반복하면 쉽게 해결할 수 있다.
주의해야 할 점은 카드에 쓰인 값이 int범위를 넘어갈 수 있으므로 관련 변수들은 long형으로 선언해줘야 한다.
'알고리즘 > 백준' 카테고리의 다른 글
1697번 숨바꼭질 (0) | 2022.09.13 |
---|---|
13164번 : 행복 유치원 (0) | 2022.09.08 |
1448번 : 삼각형 만들기 (0) | 2022.09.07 |
7795번 : 먹을 것인가 먹힐 것인가 (0) | 2022.08.31 |
2468번 : 안전 영역 (0) | 2022.08.27 |