"이 문제는 어려운 문제는 아니지만, 문제를 제대로 안읽고 (x, y)에서 (w, h)까지의 거리를 구하는 문제인줄 알고 처음에 당황했기 때문에 앞으로는 문제를 잘 읽자는 의미로 포스트를 하게 되었다."
문제 해석
코드1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token = new StringTokenizer(br.readLine());
br.close();
int x = Integer.parseInt(token.nextToken());
int y = Integer.parseInt(token.nextToken());
int w = Integer.parseInt(token.nextToken());
int h = Integer.parseInt(token.nextToken());
//직사각형의 경계선까지 가는 거리[w, h로 가는 거리가 아니다.]
int x_axisMin = findMin(x, w-x);
int y_axisMin = findMin(y, h-y);
System.out.println(y_axisMin > x_axisMin ? x_axisMin : y_axisMin);
}
//최솟값을 찾는 메서드
static int findMin(int m, int n){
if(m >= n){
return n;
}else{ //m이 더 작을때
return m;
}
}
}
결과1
코드2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import static java.lang.Math.min;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token = new StringTokenizer(br.readLine());
br.close();
int x = Integer.parseInt(token.nextToken());
int y = Integer.parseInt(token.nextToken());
int w = Integer.parseInt(token.nextToken());
int h = Integer.parseInt(token.nextToken());
//직사각형의 경계선까지 가는 거리[w, h로 가는 거리가 아니다.]
int x_axisMin = min(x, w-x);
int y_axisMin = min(y, h-y);
System.out.println(min(x_axisMin, y_axisMin));
}
}
결과2
느낀점