Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 일곱 난쟁이 (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 일곱 난쟁이 (자바/Java)

luke-king 2024. 9. 21. 16:11

 

 

 

 

 

문제 : https://www.acmicpc.net/problem/2309

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int[] arr = new int[9];
		int tot = 0;

		for(int i = 0; i < 9; i++) {
			arr[i] = sc.nextInt();
			tot += arr[i];
		}
		
		for(int i = 0; i < 8; i++) {
			for(int j = i+1; j < arr.length; j++) {
				if(tot - arr[i] - arr[j] == 100) {
					arr[i] = 0;
					arr[j] = 0;
					
					Arrays.sort(arr);
					for(int k = 2; k < 9; k++) {
						System.out.println(arr[k]);
					}
					return;
				}
				
			}
		}

	}
}

 

이번 문제는 백준 "일곱 난쟁이" 문제다.

이번 문제를 풀며 조금 까다로운 문제라고 생각이 들었다.

하지만 천천히 생각해 보면 한 단계씩 접근할 수 있어서 나름 괜찮았다.

그럼 바로 문제 풀이 해보겠다.

 

1. 입력값을 담아주기 위해 9사이즈의 배열을 생성해 준다.

 

2. for문으로 arr [] 배열 안에 값을 넣어주며 tot 변수에 각 값들을 합하여 총합을 구해준다.

 

3. 값을 세팅했다면 다음으로는 2중 for문을 사용해 조건식 tot - arr [i] - arr [j] 의 합이 100이 나오게 만들어준다.

 

4. 이때 100이 나오게 된다면 arr [i] = 0, arr [j] = 0 을 해준다. 이유는 오름차순으로 정렬을 해줄때 2 ~ 9 즉 7개의 값을 출력해주기 위해서다 만약 0으로 초기화 하지 않고 0 ~ 7을 해준다면? 오름차순으로 정렬은 해줬지만 tot - arr[i] - arr[j] == 100

조건의 arr [i], arr [j]의 값들도 포함되어서 일치하지 않게 된다.