olrlobt
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋2] #2437 ์ ์ธ ๋ณธ๋ฌธ
https://www.acmicpc.net/problem/2437
๐ ๊ณจ๋2 - #2437 ์ ์ธ
๐ ํ ์คํธ์ผ์ด์ค ์ถ๊ฐ ํํธ
7
1 1 1 3 5 13 16
= 12
3
1 2 3
= 7
1
1
= 2
2
2 2
= 1
โ๏ธ ํ์ด๋ฒ
์ฒ์์๋ ๋จ์ํ๊ฒ ์ถ๋ฅผ ์ด์ฉํด์ 1์ ๋ง๋ค๊ณ , 2๋ฅผ ๋ง๋ค๊ณ , 3์ ๋ง๋ค๊ณ ... ์ด๋ฐ ์์ผ๋ก ์๊ฐํ์๋ค.
ํ์ง๋ง ์ถ๋ฅผ ๋ฌด๊ฒ ์์ผ๋ก ์ ๋ ฌํ๋๋ผ๋, ๋ด๊ฐ ์ํ๋ ๋ต์ ์ป๊ธฐ ํ๋ค๋ค๋ ์๊ฐ์ ์ถ๊ฐ ํ ์คํธ ์ฝ๋๋ฅผ ๋ง๋ค์ด๋ณด๋ฉฐ ์ข ๋ ๊ณ ๋ฏผ ํด ๋ณด์๋ค.
๊ทธ ๊ฒฐ๊ณผ ๋ด๊ฐ ์ฐพ์ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์๋ค.
7
1 1 1 3 5 13 16
= 12
ํด๋น ํ ์คํธ์ผ์ด์ค์์ ๋ค์์๋ถํฐ 1๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฐ์ ์ฐพ์ผ๋ฉด ์ธ๋ฒ์งธ (= index 2) 1์์ ์ฐพ์์ง๊ฒ ๋๋ค.
๊ทธ ๊ฐ์ ์ด์ index ๊ฐ๋ค์ ํฉ์ ๋ง๋ค ์ ์๋ค๋ ๋ป์ด ๋๋ค. ์๋ฅผ ์์๋ก 1+1+1 ์ธ 3๊น์ง๋ ๋ง๋ค ์ ์๋ค๋ ๋ป์ด๋ค.
๋ฐ๋ผ์ ๊ทธ ๋ค์ ์์ธ 4๋ฅผ ๋ค์ ๋ค์์ ๋ถํฐ ์ฐพ์ผ๋ฉด 3 (= index 3) ์์ ๋ฉ์ถ๊ฒ ๋๊ณ , 1+1+1+3 ์ธ 6๊น์ง ๋ง๋ค ์ ์๊ฒ ๋๋ค.
ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์์ผ๋ก๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
๋ค์์๋ถํฐ ์ฐพ๋ ๋ค๋ ๊ฒ์ ์๊ฐ๋ณต์ก๋๋ฅผ ์์ฒญ ์ก์๋จน๊ธฐ ๋๋ฌธ์ด์๋ค.
๋ค์ ๋ฐฉ์์ ์์ ์ค๋ช ํ ๋ฐฉ๋ฒ์ ์์์ ์์ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ๊พผ ๋ฐฉ๋ฒ์ด๋ค.
์ญ์๋ ๊ฐ์ฅ ์์ ์์ธ 1๋ถํฐ ์ฐพ๋๋ค๋ฉด, ๋งจ ์ (= index 0) 1์์ ์ฐพ์์ง๊ฒ ๋๋ค.
์์ ๋งํ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก, 2๋ณด๋ค ํฐ ์๋ฅผ ์ฐพ๋๋ค๋ฉด ์ธ ๋ฒ์งธ (= index 2)์์ ์ฐพ์์ง๊ฒ ๋๊ณ ,
์์ ๋งํ ๋ฐฉ๋ฒ์ผ๋ก 1+1+1์ธ 3๊น์ง๋ ๋ง๋ค์ ์๋ค๋ ๋ป์ด ๋๋ค.
๋ฐ๋ผ์ ๋ค์์ 4๋ฅผ ์ฐพ๋๋ค๋ฉด 5 ์์์ ๋ฉ์ถ๊ฒ ๋๊ณ , 1+1+1+3 ์ธ 6๊น์ง, ๊ทธ ๋ค์์ 1+1+1+3+5 ์ธ 11๊น์ง, ๋ง๋ค ์ ์๊ฒ ๋๋ ๋ฐฉ์์ด๋ค. ๋ค์ ์ฐพ๋ ์์ธ 12์ ๊ฒฝ์ฐ, ๋ฐ๋ก ๋ค์ ์๊ฐ 13์ด๊ธฐ ๋๋ฌธ์ ๋ง๋ค ์ ์์ด์ ๋ต์ 12๊ฐ ๋๋ค.
์ฆ, ์์์ ๋ถํฐ ํฉ์ ๊ตฌํ๊ณ , ๋ค์ ์๊ฐ ํฉ์ ๋ค์ ์๋ณด๋ค ํฐ ์๋ผ๋ฉด, ๋ต์ ๊ตฌํ ์ ์๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค.
ํ์ด๋ฒ
1. ์ถ๋ฅผ ๋ฌด๊ฒ ์์๋๋ก ์ ๋ ฌํ๋ค.
2. ( (i)๋ฒ์งธ ์ ๊น์ง์ ํฉ +1)์ด (i+1)๋ฒ์งธ ์ ๋ณด๋ค ์๋ค๋ฉด, ํด๋น ์๋ ๋ง๋ค ์ ์๋ค.
๐๏ธ ํ์ด
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class baekjoon2437 {
private static List<Integer> weight = new ArrayList<>();
static Long findNum = 0L;
private static int findIndex = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
for (int testCase = 0; testCase < N; testCase++) {
weight.add(sc.nextInt());
}
solve();
System.out.println(findNum);
}
public static void solve() {
Collections.sort(weight);
findNumber();
}
private static void findNumber() {
int sum = weight.get(0);
if (weight.get(0) != 1) {
findNum = 1L;
return;
}
for (int i = 1; i < weight.size(); i++) {
if (sum < weight.get(i)-1) {
break;
}
sum += weight.get(i);
}
findNum = Long.valueOf(sum +1);
}
}
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋3] #13904 ๊ณผ์ (0) | 2022.12.31 |
---|---|
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋4] #1715 ์นด๋ ์ ๋ ฌํ๊ธฐ (0) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #12904 A์ B (0) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #2212 ์ผ์ (0) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋4] #14500 ํ ํธ๋ก๋ฏธ๋ ธ (1) | 2022.12.30 |