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

동그란 도그린

BOJ 2309 - 일곱 난쟁이 본문

알고리즘/문제 풀이

BOJ 2309 - 일곱 난쟁이

도그rin 2023. 1. 18. 17:40

입력

  • 아홉 개의 줄에 걸쳐 난쟁이들의 키 입력 (100 이하의 자연수, 중복 X)

출력

  • 일곱 난쟁이의 키를 오름차순으로 출력 (가능한 정답이 여러 가지인 경우에는 아무거나 출력, 일곱 난쟁이를 찾을 수 없는 경우는 없음)

풀이방법

  • Collections.sort()를 이용하여 난쟁이들의 키가 저장된 ArrayList를 오름차순으로 정렬
  • 난쟁이 아홉 명 키의 합계에서 난쟁이 두 명의 키를 뺀 값이 100인 경우를 찾음
  • for문을 이용하여 탐색하다가 위에 해당하는 경우를 찾으면, 리스트에서 난쟁이 두 명의 키를 삭제하고 반복문을 종료

코드

import java.io.*;
import java.util.*;

public class BOJ_2309 {
	public static void main(String[] args) throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		ArrayList<Integer> height=new ArrayList<Integer>();	// 난쟁이들의 키
		int sum=0;	// 난쟁이들 키의 합
		
		for(int i=0;i<9;i++) {
			height.add(Integer.parseInt(br.readLine()));	// 난쟁이들 키 입력받아 배열에 저장
			sum+=height.get(i);	// 난쟁이들 키의 합
		}

		Collections.sort(height);	// 오름차순으로 정렬
		
		Loop:
			// 탐색
			for(int i=0;i<height.size()-1;i++) {
				for(int j=i+1;j<height.size();j++) {
					if(height.get(i)+height.get(j)==sum-100) {	// 난쟁이 두명 키의 합이 sum-100과 같으면
						// 리스트에서 난쟁이 두명 키 삭제하고 반복문 종료
						height.remove(j);
						height.remove(i);
						break Loop;
					}
				}
			}
		
		// 난쟁이 일곱명의 키 출력
		Iterator<Integer> it=height.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}
}

'알고리즘 > 문제 풀이' 카테고리의 다른 글

BOJ 15650 - N과 M (2)  (0) 2023.01.23
BOJ 15649 - N과 M (1)  (0) 2023.01.19
BOJ 1476 - 날짜 계산  (0) 2023.01.15
BOJ 1978 - 소수 찾기  (0) 2023.01.14
BOJ 1037 - 약수  (0) 2023.01.14
Comments