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

레곤토르닉·2025년 8월 6일
0

BaekJoon

목록 보기
2/64
post-thumbnail

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

현재 좌표 (x, y)에 있는 점이
직사각형 안에서 경계선까지 최소 몇 단위로 움직이면 탈출할 수 있는지를 구하는 문제입니다.


✅ 문제 개요

항목내용
문제 번호1085번 - 직사각형에서 탈출
난이도브론즈 3
주요 알고리즘수학, 절댓값, 거리 비교

✅ 문제 설명 요약

  • 좌표 평면에 (0, 0)부터 (w, h)까지 직사각형이 존재
  • 어떤 점 (x, y)는 이 직사각형 내부에 있음
  • 이 점이 상하좌우 경계 중 가장 가까운 곳까지 가는 최소 거리를 구해야 함

✅ 풀이 전략

1️⃣ 상하좌우 네 방향 경계까지의 거리 계산
2️⃣ 왼쪽 = x, 오른쪽 = w - x, 아래 = y, 위 = h - y
3️⃣ 위 4개의 거리 중 최소값을 출력


✅ Java 코드 예제

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {

        // 고속 입력/출력 객체
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 입력된 한 줄을 공백 기준으로 나눔
        StringTokenizer st = new StringTokenizer(br.readLine());

        // 현재 점의 좌표 (x, y)
        int x = Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());

        // 직사각형의 오른쪽 위 꼭짓점 (w, h)
        int w = Integer.parseInt(st.nextToken());
        int h = Integer.parseInt(st.nextToken());

        // 왼쪽 경계까지 거리
        int toLeft = x;

        // 오른쪽 경계까지 거리
        int toRight = w - x;

        // 아래쪽 경계까지 거리
        int toBottom = y;

        // 위쪽 경계까지 거리
        int toTop = h - y;

        // 최소 거리 계산
        int result = Math.min(Math.min(toLeft, toRight), Math.min(toBottom, toTop));

        // 결과 출력
        bw.write(String.valueOf(result));
        bw.newLine();
        
        bw.flush();
        bw.close();
        br.close();
    }
}

⚠️ 실전 주의사항

항목설명
거리 비교는 Math.min() 중첩 사용좌우, 상하 중 각각 최소 → 두 그룹 중 최소
음수 가능성 없음항상 0 ≤ x ≤ w, 0 ≤ y ≤ h 조건 보장
좌표 단위는 정수실수 계산 없음, int로 충분

📝 마무리 요약

✔️ 네 방향의 경계선까지 거리를 모두 계산해야 합니다.
✔️ 좌우/상하 중 최소 거리를 구해 탈출까지의 최소 거리를 계산합니다.
✔️ 단순하지만 조건 누락 없이 처리하는 것이 포인트입니다.

profile
기록은 나의 무기, 원칙은 나의 방패

0개의 댓글