코딩 테스트/백준

백준 - [단계별로 풀어보기 기하 1: 직사각형과 삼각형] 1085 직사각형에서의 탈출

devrabbit22 2026. 3. 30. 00:15

이번 문제는 경계선까지 가장 가까운 직선 거리를 구하는 것이다. 사각형 안에서 밖으로 나가려면 4개의 벽 중 하나로 직선 이동하면 되는 것이다.

더보기

현재 위치: (x, y)

  • 왼쪽 벽까지 거리 → x
  • 아래쪽 벽까지 거리 → y
  • 오른쪽 벽까지 거리 → w - x
  • 위쪽 벽까지 거리 → h - y

이 4개 중 최소값 구하면 해결된다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    internal class geometry1
    {
        static void Main(string[] args)
        {
            //백준 1085 직사각형에서의 탈출
            //한수의 위치(x, y), 왼쪽 아래 꼭짓점(0, 0), 오른쪽 위 꼭짓점(w, h) -> 4개의 벽 중 하나로 직선 이동해 최소값 구하기
            string[] input = Console.ReadLine().Split();

            int x = int.Parse(input[0]);
            int y = int.Parse(input[1]);
            int w = int.Parse(input[2]);
            int h = int.Parse(input[3]);

            // 네 방향(왼쪽, 오른쪽, 아래, 위) 벽까지 거리 중 최소값
            int result = Math.Min(
                Math.Min(x, w - x),   // 왼쪽(x)과 오른쪽(w - x) 벽까지 거리 중 더 가까운 값
                Math.Min(y, h - y));    // 아래(y)와 위쪽(h - y) 벽까지 거리 중 더 가까운 값

            Console.WriteLine(result);
        }
    }
}

출력 결과