새소식

알고리즘 문제풀이/BOJ

[BOJ] 백준 1085번 직사각형에서의 탈출 자바(java)

  • -

BOJ 1085번 직사각형에서 탈출 자바(java) 풀이

문제정리

  1. 지금 현재 위치는 (x,y) 이고 직사각형의 왼쪽 아래 위치는 (0,0)이다.
  2. 오른쪽 위 꼭지점은 (w,h)에 있다.
  3. 직사각형 경계선까지 가는 거리의 최소값을 구하는 프로그램을 작성해라.

문제풀이

경계선이란 직사각형의 선 위를 이야기합니다.
예시를 보면 가로 10 세로 3의 크기인 직사각형이 있습니다. 한수는 (6,2)에 있으므로 위쪽 (6,3)으로 가면 직사각형 위에 있게됩니다.
즉 1만 이동하면 선 위에 있을 수 있습니다.
그림을 한 번만 그려보면 쉽게 알 수 있습니다.

  1. 높이(위, 아래 직사각형 선)와 너비선(양 옆 직사각형 선)을 따로 따져줍니다.
  2. 높이
    2.1 현 위치의 y좌표가 높이의 절반 보다 작은 경우에 아래로 가는 최소 거리는 y좌표 입니다.
     당연히 높이의 중간 위치보다 아래에 있다면 아래 선과 더 가깝습니다.
     아래 선의 y좌표는 0이므로 가까운 거리는 'y 좌표'가 됩니다.
    2.2 현 위치의 중간 위치보다 큰 경우 위쪽 선으로 가는 최소 거리는 'h-y' 입니다.
     높이의 중간 위치보다 위라면 위쪽 직사각형 선에 더 가깝습니다.
     위쪽 선의 y좌표는 h이고 현 위치의 y좌표는 'y'이므로 최속 ㅓ리는 'h-y'가 됩니다.
  3. 너비
    3.1 현 위치의 x좌표가 너비의 절반 보다 작다면 왼쪽 선과 가깝다.
     이도 2.1과 같습니다.
    3.2 현 위치의 y좌표가 너비의 절반 보다 크다면 오른쪽 선과 가깝습니다.
     이도 2.2와 같습니다.
  4. 너비와 가까운 거리, 높이와 가까운 거리를 구했다면 두 수를 비교하여 더 작은 수를 출력합니다.

1085번 직사각형에서의 탈출 자바 코드

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.