[백준] 3009: 네 번째 점 (자바)

이지혁·2024년 11월 21일

백준

목록 보기
11/19


런타임 오류 코드

반복문을 비효율적으로 사용해서 런타임 오류가 발생했다.


수정 코드

package scanner;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int [][] arr = new int[3][2];

        for(int i = 0; i < 3; i++){
            arr[i][0] = sc.nextInt();
            arr[i][1] = sc.nextInt();
        }

        for(int i = 1; i < 3; i++){
            if(arr[0][0] == arr[i][0]) {
                arr[0][0] = 0;
                arr[i][0] = 0;
            }
            if(arr[0][1] == arr[i][1]) {
                arr[0][1] = 0;
                arr[i][1] = 0;
            }
        }

        for(int i = 0; i < 3; i++){
            if(arr[0][0] == 0 && arr[i][0] != 0) {
                System.out.print(arr[i][0] + " ");
            }
        }
        if(arr[0][0] != 0) System.out.print(arr[0][0] + " ");

        for(int i = 0; i < 3; i++){
            if(arr[0][1] == 0 && arr[i][1] != 0) {
                System.out.println(arr[i][1]);
            }
        }
        if(arr[0][1] != 0) System.out.println(arr[0][1]);
    }
}

뭔가 비효율적이라고 생각한다.
단순히 x와 y값 중에 짝이 없는 값을 출력하는 코드를 작성했다.
다른 사람이 해결한 방식을 참고해봐야겠다.

수정의 수정

반복문으로 판별하기보다는 단순히 조건문을 여러개 써서 짝이 아닌 것을 찾아보겠다.

package scanner;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int [][] arr = new int[3][2];

        for(int i = 0; i < 3; i++){
            arr[i][0] = sc.nextInt();
            arr[i][1] = sc.nextInt();
        }

        int x, y;

        if(arr[0][0] == arr[1][0]) x = arr[2][0];
        else if(arr[0][0] == arr[2][0]) x = arr[1][0];
        else x = arr[0][0];

        if(arr[0][1] == arr[1][1]) y = arr[2][1];
        else if(arr[0][1] == arr[2][1]) y = arr[1][1];
        else y = arr[0][1];

        System.out.println(x + " " + y);
    }
}

이렇게 풀이해봤지만 조건문을 사용하는게 미세하게 더 오래걸렸다..!

Scanner가 역시 너무 느린듯 하다.

0개의 댓글