olrlobt

[์ž๋ฐ”/๋ฐฑ์ค€ ๊ณจ๋“œ2] #2437 ์ €์šธ ๋ณธ๋ฌธ

Algorithm/๋ฐฑ์ค€

[์ž๋ฐ”/๋ฐฑ์ค€ ๊ณจ๋“œ2] #2437 ์ €์šธ

olrlobt 2022. 12. 31. 02:30

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);
    }
}
Comments