๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐฑ์ค€ 2309๋ฒˆ ์ผ๊ณฑ ๋‚œ์Ÿ์ด ์™„์ „ํƒ์ƒ‰(brute-force) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ :: ์ฝ”๋“œ ์ž๋ชฝ

by ๐ŸŒปโ™š 2019. 12. 23.

์™„์ „ ํƒ์ƒ‰ Brute-Force

์™„์ „ ํƒ์ƒ‰์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜์ˆ˜๋ฅผ ์ผ์ผ์ด ํƒ์ƒ‰ํ•˜์—ฌ ์ •๋‹ต์„ ์ฐพ์•„๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ํ™•์ธํ•˜์—ฌ ์ •ํ™•๋„๊ฐ€ ๋†’๊ณ  ๊ฐ•๋ ฅํ•œ ๋ฐฉ์‹์ด์ง€๋งŒ, ์‹œ๊ฐ„์€ ๋‹ค์†Œ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ธŒ๋ฃจํŠธ ํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฌธ์ œ์˜ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋จผ์ € ๊ณ„์‚ฐ์„ ํ•ด๋ด์•ผํ•œ๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ 1์ดˆ์— ๋Œ€๋žต 1์–ต ๋ฒˆ ์ •๋„์˜ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํšจ์œจ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ธŒ๋ฃจํŠธ ํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ๊ธฐ์ค€์€ ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "์ฒœ๋งŒ(10,000,000) ๊ฑด ์ดํ•˜์˜ ๊ฒฝ์šฐ ์ˆ˜๊ฐ€ ์กด์žฌํ•  ๋•Œ๋งŒ ๋ธŒ๋ฃจํŠธ ํฌํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค."๋ผ๋Š” ๊ธฐ์ค€์„ ์ •ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.

 

 

[๋ฐฑ์ค€] 2309๋ฒˆ ์ผ๊ณฑ ๋‚œ์Ÿ์ด

 

2309๋ฒˆ: ์ผ๊ณฑ ๋‚œ์Ÿ์ด

์•„ํ™‰ ๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๋‚œ์Ÿ์ด๋“ค์˜ ํ‚ค๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ํ‚ค๋Š” 100์„ ๋„˜์ง€ ์•Š๋Š” ์ž์—ฐ์ˆ˜์ด๋ฉฐ, ์•„ํ™‰ ๋‚œ์Ÿ์ด์˜ ํ‚ค๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๋ฉฐ, ๊ฐ€๋Šฅํ•œ ์ •๋‹ต์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด๊ฑฐ๋‚˜ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

ํ’€์ด

9๋ช…์ค‘ 7๋ช…์˜ ํ‚ค๋ฅผ ํ•ฉ์‚ฐํ•˜์—ฌ 100์˜ ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค. 9C7์„ ๋ณ€ํ™˜ํ•˜์—ฌ 9C2๋กœ ๊ณ„์‚ฐ์„ ํ•ด๋ณด๋ฉด ์ด (9*8)/(2*1) = 36๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋ธŒ๋ฃจํŠธ ํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค.

 

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();
        int totalSum = 0;
        while (sc.hasNext()){
            int num = sc.nextInt();
            totalSum += num;
            list.add(num);
        }
        Collections.sort(list);
 
        outerLoop : for(int i=0; i<list.size()-1; i++){
            for(int j=i+1; j<list.size(); j++){
                if(totalSum - list.get(i) - list.get(j) == 100){
                    for(int k=0; k<list.size(); k++){
                        if(k != i && k != j){
                            System.out.println(list.get(k));
                        }
                    }
                    break outerLoop;
                }
            }
        }
    }
}
 

๋Œ“๊ธ€