1. 문제
https://www.acmicpc.net/problem/2309
2. 풀이
- 브루트 포스는 완전 탐색 알고리즘으로 모든 경우의 수를 구하는 알고리즘이다.
- 우선, 입력하는 값을 리스트에 넣고 안에 값을 모두 더한다.
- 오름차순 출력하기 위해 Collections.sort를 활용하여 정렬을 한다.
- 모든 경우의 수를 대입하기 위해 이중 for 문을 활용하고, if 문에 모두 더한 값 (sum) - i번째 - j번째 값이 == 100과 같은지 확인한다. (모든 값을 두개씩 빼주면서 100이란 값을 찾기 위함이다.)
- 100이란 값을 찾았다면 출력을 위해 for문을 만들고, 100의 값을 만들었을 때, 나왔던 i의 값과 j의 값을 k에 비교하고 그 값을 continue 해주고 나머지 출력한다.
3. 코드
package baekjoon;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Q2309 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<>();
int sum = 0;
for (int i = 0; i < 9; i++) {
list.add(scanner.nextInt());
sum += list.get(i); // 난쟁이 키 총 합
}
Collections.sort(list); // 정렬
for (int i = 0; i < list.size(); i++) { // 브루트포스 나올 수 있는 모든 경우의 수를 탐색
for (int j = i + 1; j < list.size(); j++) {
if (sum - list.get(i) - list.get(j) == 100) {
for (int k = 0; k < list.size(); k++) {
if (i == k || j == k) {
continue;
}
System.out.println(list.get(k));
}
}
}
}
}
}
'Algorithm' 카테고리의 다른 글
[Java] 백준 6378번 : 디지털 루트 (0) | 2022.03.02 |
---|---|
[Java] 백준 9366번 : 삼각형 분류 (0) | 2022.03.02 |
[Java] 백준 2495번 : 연속구간 (0) | 2022.02.19 |
[Java] 백준 10798번 : 세로읽기 ver.2 (0) | 2022.02.16 |
[Java] 백준 10804번 : 카드 역배치 (0) | 2022.02.16 |