브론즈 3의 문제여서 그런지 30분 정도만에 풀었다.
쉬운 문제를 풀어보니 그래도 뭔가 할 수 있다는 생각이 든다 ^^
변수 입력 받기
네 개의 값을 Scanner로 입력 받았다.
sc.close();까지 야무지게 해주기.
cf. sc.close()는 어디서 해줘야 하나?
일반적으로 더이상 입력할 것이 없을 때 Scanner를 닫아주는 것이 좋다
close() 다음에 .next() 등의 메소드를 쓰면 입력할 수 없다
대소 비교 -> 최솟값 찾아야
토너먼트 방식으로 대소비교를 진행해주었다.
먼저 x와 y값을 비교해주고, 그 중 작은 값을 h-y와 비교해주고, 그 중 작은 값을 w-x와 비교해주는 방식으로 진행했다.
여기서 발생한 잘못된 생각
비교 하는 횟수가 총 3번이기 때문에 반복문을 3번 돌려서 대소비교를 해야 한다고 생각
-> 각각의 비교하는 것은 한 번씩만 비교해주면 되므로 반복문을 돌릴 필요가 없이 그냥 if문을 3개 써서 비교해주면 끝나는 것!
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int y = sc.nextInt();
int w = sc.nextInt();
int h = sc.nextInt();
sc.close();
int result = 0;
// 대소 비교 -> 가장 작은 값 고르기
if (x >= y) {
result = y;
} else {
result = x;
}
if (result >= (h-y)) {
result = (h-y);
}
if (result >= (w-x)) {
result = (w-x);
}
System.out.println(result);
}
}
Math.min(x,w-x)
처럼 Math.min();
함수를 이용할 수도 있음