Stay Hungry Stay Foolish

BOJ 코딩테스트/Bronze

BOJ 3009 : 네 번째 점 (Java/구현/Bronze 3)

dev스카이 2024. 10. 14. 16:55

[문제 링크] 👉 https://www.acmicpc.net/problem/3009


설명

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

 

풀이

아래 사각형은 입력이 다음과 같을 때의 그림이다. 첫 번째 열은 x값, 두 번째 열은 y값을 의미한다.  

5 5
5 7
7 5

 

어렵게 생각할 거 없이 x와 y값에서 중복이 없는 숫자를 출력하면 된다.

 

sol.1

  • 첫 번째 수와 두 번째 수가 같으면 세 번째 수를 출력한다.
  • 첫 번째 수와 세 번째 수가 같으면 두 번째 수를 출력한다.
  • 첫 번째 수와 같은 수가 없으면 첫 번째 수를 출력한다.

 

sol.2 - 삼항 연산자를 이용

 

Expression1이 true이면 Expression2를 반환하고, false이면 Expression3를 반환한다. 이 방법으로 문제를 풀면 다음과 같다.

  • x[0]과 x[1]이 같으면 x[2]를 반환하고, 그렇지 않으면 x[0]과 x[2]를 비교하여 나머지 값을 반환한다.
  • (x[0] == x[1]) ? x[2] : (x[0] == x[2]) ? x[1] : x[0]

 

 

Solution

sol.1

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] x = new int[3];
        int[] y = new int[3];

        for (int i = 0; i < 3; i++) {
            String[] nums = br.readLine().split(" ");
            x[i] = Integer.parseInt(nums[0]);
            y[i] = Integer.parseInt(nums[1]);
        }
        int result1, result2;
        if (x[0] == x[1]) result1 = x[2];
        else if (x[0] == x[2]) result1 = x[1];
        else result1 = x[0];

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

        System.out.println(result1 + " " + result2);
    }
}

 

 

sol.2

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] x = new int[3];
        int[] y = new int[3];

        for (int i = 0; i < 3; i++) {
            String[] nums = br.readLine().split(" ");
            x[i] = Integer.parseInt(nums[0]);
            y[i] = Integer.parseInt(nums[1]);
        }
        int result1 = (x[0] == x[1]) ? x[2] : (x[0] == x[2]) ? x[1] : x[0];
        int result2 = (y[0] == y[1]) ? y[2] : (y[0] == y[2]) ? y[1] : y[0];

        System.out.println(result1 + " " + result2);
    }
}