JuSeok

2309번

문제

  • 일곱 난쟁이의 키의 합은 100, 아홉 난쟁이의 키가 주어질때 진짜 일곱 난쟁이의 키를 오름차순으로 출력하는 문제
문제 해결 순서
  1. 아홉 난쟁이의 키의 합을 sum에 저장
  2. sum에서 100을 뺀 수를 sub에 저장
  3. 2중 for문을 돌며 arr[i] + arr[j] == sub이면 가짜 난쟁이라는 뜻
  4. break loop를 이용해 반복문을 탈출, 값을 찾자마자 탈출하지 않으면 arr[i] + arr[j] == sub이 가능한 다른 값을 찾아 여러개의 배열이 0으로 바뀔 수 있음
  5. 배열을 정렬해서 출력
import java.util.Scanner;
import java.util.Arrays;
class Main {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int[] arr = new int[9];
    int sum = 0;
    for(int i=0; i<9; i++){
      arr[i] = scan.nextInt();
      sum += arr[i];
    }
    int sub = sum - 100;

    loop:
    for(int i=0; i<9; i++){
      for(int j=i+1; j<9; j++){
        if(arr[i] + arr[j] == sub){
          arr[i] = 0;
          arr[j] = 0;
          break loop;
        }
      }
    }
    Arrays.sort(arr);
    for(int i=0; i<9; i++){
      if(arr[i] != 0){
        System.out.print(arr[i] + "\n");
      }
    }
  }
}

Tags