본문 바로가기

TIL/Algorithm

Java 백준 1085번 문제 - 직사각형 탈출

반응형

직사각형에서 탈출 성공

시간제한 메모리 제한 제출 정답 맞은 사람 정답 비율

2 초 128 MB 42856 24822 22033 58.182%

문제

한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 x, y, w, h가 주어진다.

출력

첫째 줄에 문제의 정답을 출력한다.

제한

  • 1 ≤ w, h ≤ 1,000
  • 1 ≤ x ≤ w-1
  • 1 ≤ y ≤ h-1
  • x, y, w, h는 정수

예제 입력 1 

6 2 10 3

예제 출력 1 

1

 


x = 현재 x좌표

y = 현재 y좌표

w = 직사각형 높이

h = 직사각형 넓이

 

BufferedReader로 입력값을 받는다

공백기준으로공백 기준으로 끊어져서 입력되기 때문에 StringTokenizer 클래스를 이용하여 공백 기준으로 나누어 변수에 값을 담는다

 

x에 위치해있다면 x까지의 거리를 구하는게 최단경로인 건지

아니면 x부터 총넓이까지의 거리를 구하는 게 최단경로인지 구해야 한다

몰론 y축도 같은 이론으로 성립된다

 

x_min과 y_min 변수를 선언하고

이 변수에 담길 값들은 Math.min(둘 중 작은 값 리턴)을 이용하여

Math.min(x, w-x) => Math.min(x까지 간 거리, x부터 총넓이까지 간 거리)를 구하면 x축의 최단경로가 나온다

 

y축도 동일하게 한 뒤에

x의 최단경로와 y의 최단경로도 같은 맥락으로 구해서 출력하면 된다

반응형