본문 바로가기
프로그래밍/백준 문제 풀이(자바)

백준 3009번 자바 문제 답/해설(네 번째 점 문제)

by 리드민 2021. 12. 29.
반응형

[1] 백준 카테고리

단계별로 풀어보기
기본 수학 2
8단계 3009번 문제
직사각형에서 탈출


[2] 문제

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

 

1. 입력

세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.


2. 출력

직사각형의 네 번째 점의 좌푤르 출력한다.


3. 예제 입력 1

5 5

5 7

7 5


4. 예제 출력 1
7 7


[3] 정답
1. 정답 해설 미포함

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;


public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		int a1 = Integer.parseInt(st.nextToken());
		int a2 = Integer.parseInt(st.nextToken());
		st = new StringTokenizer(br.readLine()," ");
		
		int b1 = Integer.parseInt(st.nextToken());
		int b2 = Integer.parseInt(st.nextToken());
		st = new StringTokenizer(br.readLine(), " ");
		
		int c1 = Integer.parseInt(st.nextToken());
		int c2 = Integer.parseInt(st.nextToken());
		
		int d1=0;
		int d2=0;
		
		if(a1==b1) {
			d1=c1;
		}
		else if(b1==c1){
			d1=a1;
		}
		else{
			d1=b1;
		}

		if(a2==b2) {
			d2=c2;
		}
		else if(b2==c2){
			d2=a2;
		}
		else{
			d2=b2;
		}
		
		System.out.println(d1 +" "+ d2);
	}
}


2. 정답 해설 포함

import java.io.BufferedReader;
/* BufferedReader 사용을 위해서 java.io.BufferedReader 클래스를 import 한다.
Enter를 경계로 인식하고 받은 데이터는 String으로 고정된다.*/
import java.io.InputStreamReader;
/* byte 단위 데이터를 문자 단위 데이터로 처리할 수 있도록 변환해주기 위해서
InputStreamReader를 사용한다.
InputStreamReader 사용을 위해서 java.io.InputStreamReader 클래스를 import 한다.*/
import java.io.IOException;
/* 예외 처리를 위해서 IOException를 사용한다.
IOException 사용을 위해서 java.io.IOException 클래스를 import 한다.*/
import java.util.StringTokenizer;
/* 공백 단위로 호출하기 위해서 StringTokenizer를 사용한다.
StringTokenizer를 사용하기 위해서
StringTokenizer java.util.String 클래스를 import 한다.*/

public class Main {
// 접근제어자 public으로 Main 클래스를 선언한다.
	public static void main(String[] args) throws NumberFormatException, IOException{
	// 접근제어자 public으로 메모리에 상주하고 리턴값이 없이 main 함수를 선언한다.
	
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// BufferedReader 객체 br를 선언한다
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		// String 객체 st를 선언한다 이제 공백으로 값을 입력 받을 수 있다.
		
		int a1 = Integer.parseInt(st.nextToken());
		/* int형 변수 a1를 선언하고 값을 공백 단위로 구분해서 입력받는다
		Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/
		int a2 = Integer.parseInt(st.nextToken());
		/* int형 변수 a2를 선언하고 값을 공백 단위로 구분해서 입력받는다
		Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/
		st = new StringTokenizer(br.readLine()," ");
		// StringTokenizer를 이용해서 개행한다.
		
		
		int b1 = Integer.parseInt(st.nextToken());
		/* int형 변수 b1를 선언하고 값을 공백 단위로 구분해서 입력받는다
		Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/
		int b2 = Integer.parseInt(st.nextToken());
		/* int형 변수 b2를 선언하고 값을 공백 단위로 구분해서 입력받는다
		Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/		
		st = new StringTokenizer(br.readLine(), " ");
		// StringTokenizer를 이용해서 개행한다.
		
		int c1 = Integer.parseInt(st.nextToken());
		/* int형 변수 c1를 선언하고 값을 공백 단위로 구분해서 입력받는다
		Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/
		int c2 = Integer.parseInt(st.nextToken());
		/* int형 변수 c2를 선언하고 값을 공백 단위로 구분해서 입력받는다
		Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/		
		
		int d1=0;
		// int형 변수 d1를 선언하고 값을 0으로 초기화한다.
		int d2=0;
		// int형 변수 d2를 선언하고 값을 0으로 초기화한다.
		
		if(a1==b1) {
		// 변수 a1과 변수 b1에 저장된 값이 같을때 괄호안의 코드를 실행한다.
			d1=c1;
			// 변수 c1에 저장된 값을 변수 d1에 저장한다.
		}
		else if(b1==c1){
		// 변수 b1과 변수 c1에 저장된 값이 같을때 괄호안의 코드를 실행한다.
			d1=a1;
			// 변수 a1에 저장된 값을 변수 d1에 저장한다.
		}
		else{
		// 위의 사례에 전부 해당되지 않을 경우 괄호안의 코드를 실행한다.
			d1=b1;
			// 변수 b1에 저장된 값을 변수 d1에 저장한다.
		}

		if(a2==b2){
		// 변수 a2과 변수 b2에 저장된 값이 같을때 괄호안의 코드를 실행한다.
			d2=c2;
			// 변수 d2에 저장된 값을 변수 c2에 저장한다.
		}
		else if(b2==c2){
		// 변수 b2과 변수 c2에 저장된 값이 같을때 괄호안의 코드를 실행한다.
			d2=a2;
			// 변수 d2에 저장된 값을 변수 a2에 저장한다.
		}
		else{
		// 위의 사례에 전부 해당되지 않을 경우 괄호안의 코드를 실행한다.
			d2=b2;
			// 변수 d2에 저장된 값을 변수 b2에 저장한다.
		}
		
		System.out.println(d1 +" "+ d2);
		// 변수 d1에 저장된 값과 변수 d2에 저장된 값을 출력한다.
	}
}

 

직사각형이므로 변 두쌍의 값이 각각 같아야 한다. 변 3개의 길이가 주어졌으므로 길이가 같은 변 2개를 제외한 변 1개의 길이와 구해야 되는 변의 길이가 같을 것이다. 이를 알고리즘으로 표현하면 다음과 같다.

		if(a1==b1) {
		// 변수 a1과 변수 b1에 저장된 값이 같을때 괄호안의 코드를 실행한다.
			d1=c1;
			// 변수 c1에 저장된 값을 변수 d1에 저장한다.
		}
		else if(b1==c1){
		// 변수 b1과 변수 c1에 저장된 값이 같을때 괄호안의 코드를 실행한다.
			d1=a1;
			// 변수 a1에 저장된 값을 변수 d1에 저장한다.
		}
		else{
		// 위의 사례에 전부 해당되지 않을 경우 괄호안의 코드를 실행한다.
			d1=b1;
			// 변수 b1에 저장된 값을 변수 d1에 저장한다.
		}

 

반응형