[백준] 1085번 : 직사각형에서 탈출

letsbebrave·2021년 12월 2일
0

codingtest

목록 보기
6/146
  • 문제


브론즈 3의 문제여서 그런지 30분 정도만에 풀었다.
쉬운 문제를 풀어보니 그래도 뭔가 할 수 있다는 생각이 든다 ^^


  • 사고
  1. 변수 입력 받기
    네 개의 값을 Scanner로 입력 받았다.
    sc.close();까지 야무지게 해주기.

    cf. sc.close()는 어디서 해줘야 하나?
    일반적으로 더이상 입력할 것이 없을 때 Scanner를 닫아주는 것이 좋다
    close() 다음에 .next() 등의 메소드를 쓰면 입력할 수 없다

  2. 대소 비교 -> 최솟값 찾아야
    토너먼트 방식으로 대소비교를 진행해주었다.
    먼저 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(); 함수를 이용할 수도 있음
    BufferedReader를 이용해서 구하는 방법 :
    https://st-lab.tistory.com/86 이 분 블로그에 자세하게 정리되어 있다.
profile
그게, 할 수 있다고 믿어야 해

0개의 댓글