본문 바로가기
혼자 공부하는 것들/알고리즘

백준 JAVA) 2309번 문제 일곱 난쟁이

by applepick 2020. 9. 20.
반응형

일단문제를볼까요?

www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

저는 자바로 풀었습니다.

import java.util.*;
public class Main{	
	public static void main(String[] arg) {
		Scanner input  = new Scanner(System.in);
		
		int N = 9;
		int[] arr = new int[N];
		int sum=0;
		boolean check =false;
		
		for(int i=0;i<N;i++) {
			arr[i] = input.nextInt();
			sum+=arr[i];
		}
        
		for(int i=0;i<N;i++) {
			if(check)break;
			for(int j=0;j<N;j++) {
				if(i==j)continue;
				if(sum-arr[j]-arr[i]==100) {
					arr[i]=0;
					arr[j]=0;
					check=true;
					break;
				}
			}
		}
		Arrays.sort(arr);
		for(int i =0;i<9;i++) {
			if(arr[i]!=0)System.out.println(arr[i]);
		}
		
	}
}

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. 

이 문제는 배열로 접근해서 풀어야할 것 같습니다. 9개의 배열을 만들어줍니다. 합이 100이되는지 체크할 변수도 필요하네요. 그리고 boolean을통해 체크해줍니다. 9명의 난쟁이 키를 입력해주는 for문을 돌립니다. 그리고 그 값을 합 변수에 더해줍니다.  여기서 이제 값을 비교하기위해 for문을 돌려줍니다. 저는 sum-arr[j]-arr[i]==100으로 일곱 난쟁이들을 찾아줍니다. sort 함수를통해 오름차순으로 정리한뒤 출력해줬습니다. 

 

 

 

 

 

 

 

반응형

댓글