문제 해석
코드(정답)
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer token;
int x_axis[] = new int[3]; //x 좌표 3개 입력받아서 저장할 배열
int y_axis[] = new int[3]; //y 좌표 3개 입력받아서 저장할 배열
for(int i = 0; i < 3; i++) { //3좌표 값만 받으니까 반복문 3번
token = new StringTokenizer(br.readLine());
//한줄씩 입력받아서 공백을 기준으로
x_axis[i] = Integer.parseInt(token.nextToken()); //앞은 x좌표
y_axis[i] = Integer.parseInt(token.nextToken()); //뒤는 y좌표
}
br.close(); //더이상 입력받을 값 없음
int x = 0; //찾아야할 x좌표 값을 저장하는 변수
int y = 0; //찾아야할 y좌표 값을 저장하는 변수
if(x_axis[0] == x_axis[1]){ //만약 x 0인덱스와 1인덱스가 같다면 2개 있다는 뜻임으로
x = x_axis[2]; //0과 1인덱스가 아닌 2인덱스를 저장
}else{ //0과 1인덱스의 x값이 다른데,
//만약, x의 0인덱스와 2인덱스가 같으면 1인덱스 저장 그게 아니라면 0인덱스를 저장
x = (x_axis[0] == x_axis[2]) ? (x_axis[1]) : (x_axis[0]);
}
//y도 x와 마찬가지
if(y_axis[0] == y_axis[1]){
y = y_axis[2];
}else{
y = (y_axis[0] == y_axis[2]) ? (y_axis[1]) : (y_axis[0]);
}
bw.write(x + " " + y);
bw.flush();
bw.close();
}
}
결과(1)
코드의 설명은 주석으로 작성해놓았다.
좌표 값을 찾는 로직을 간단하게 풀어보자면, 3개의 좌표 값을 저장한 x_axis, y_axis 배열에서 같은 값이 없는 x좌표와 y좌표를 각각 구하면 되는 문제이다.
근데 y와 x를 찾는 if문이 로직이 공통되므로 함수를 빼보았다.
함수로 뺀 코드(정답)
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer token;
int x_axis[] = new int[3]; //x 좌표 3개 입력받아서 저장할 배열
int y_axis[] = new int[3]; //y 좌표 3개 입력받아서 저장할 배열
for(int i = 0; i < 3; i++) { //3좌표 값만 받으니까 반복문 3번
token = new StringTokenizer(br.readLine());
//한줄씩 입력받아서 공백을 기준으로
x_axis[i] = Integer.parseInt(token.nextToken()); //앞은 x좌표
y_axis[i] = Integer.parseInt(token.nextToken()); //뒤는 y좌표
}
br.close(); //더이상 입력받을 값 없음
bw.write(findAxis(x_axis) + " " + findAxis(y_axis));
bw.flush();
bw.close();
}
//각각(x와 y)의 좌표값을 찾아주는 메서드
static int findAxis(int[] array){
if(array[0] == array[1]){ //만약 x 0인덱스와 1인덱스가 같다면 2개 있다는 뜻임으로
return array[2]; //0과 1인덱스가 아닌 2인덱스를 저장
}else{ //0과 1인덱스의 x값이 다른데,
//만약, x의 0인덱스와 2인덱스가 같으면 1인덱스 저장 그게 아니라면 0인덱스를 저장
return (array[0] == array[2]) ? (array[1]) : (array[0]);
}
}
}
결과(2)
느낀점