[backjoon] java 2309

이동엽·2023년 4월 9일
0

문제

첫 시도


import java.util.Arrays;
import java.util.Scanner;

public class ex2309 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[9];
        int sum=0;
        for (int i = 0; i < 9; i++) {
            arr[i] = sc.nextInt();
            sum+= arr[i];
        }
        Arrays.sort(arr);//정렬
        //해당 인덱스에 0을 초기화해서 차별점을 준다.
        for(int i=0; i<arr.length-1; i++){
            for(int j=i+1; j<arr.length; j++){
                if(sum-arr[i]-arr[j]==100){
                    arr[i]=0;
                    arr[j]=0;
                }
            }
        }
        //그다음 0인 인덱스를 빼고 출력한다.
        for(int i:arr){
            if(i!=0)
                System.out.println(i);
        }
    }
}

출력은 올바르지만, 백준에선 틀렸다고 나왔다.
곰곰히 생각해보니 백준에선 여러가지 입력값을 넣는다고 생각하면 만약 0을 입력한다면, 이코드는 틀린게 맞다고 생각이 든다.

마지막 시도


import java.util.Arrays;
import java.util.Scanner;

public class ex2309 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[9];
        int sum=0;
        int f1=0;
        int f2=0;
        for (int i = 0; i < 9; i++) {
            arr[i] = sc.nextInt();
            sum+= arr[i];
        }
        Arrays.sort(arr);
        for(int i=0; i<arr.length-1; i++){
            for(int j=i+1; j<arr.length; j++){
                if(sum-arr[i]-arr[j]==100){
                    f1=i;
                    f2=j;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
                if(i==f1||i==f2){
                    continue;
                }
            System.out.println(arr[i]);
        }
    }
}

그래서 해당 인덱스 값을 저장해 for문으로 순회했을때 그 인덱스값이 나오면 continue를 하고 나머지를 출력해줬다.

느낀점
여러가지 입력값을 생각해야 다양한 테스트를 통과하는 코드를 짜야한다고 느꼈다.

profile
씨앗

0개의 댓글