동그란 도그린
BOJ 2309 - 일곱 난쟁이 본문
입력
- 아홉 개의 줄에 걸쳐 난쟁이들의 키 입력 (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