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

JIHYUN·2021년 10월 7일
0
post-thumbnail

📌 문제

한수는 지금 (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는 정수

📌 예제 입력

📌 사용언어 : JAVA

📌 solution

import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int x = scan.nextInt();
        int y = scan.nextInt();
        int w = scan.nextInt();
        int h = scan.nextInt();

        PriorityQueue<Integer> arr = new PriorityQueue<>();

        arr.add(x);
        arr.add(w - x);
        arr.add(y);
        arr.add(h - y);

        System.out.println(arr.peek());

    }
}

😎 풀이

우선순위 큐를 알면 쉽게 풀 수 있다. 우선순위 큐는.... 자료구조에 정리를 해야하는데... 귀찮아서 아직까지 미루고 있다... 공부하는건 쉬운데 공부한걸 정리해두는게 젤 귀찮다.. 그래서 깃허브에 커밋한 문제들은 많은데 풀이 올리는게 엄청 밀려있다ㅠ퓨ㅠㅠ

하여튼 우선순위 큐를 간단하게 설명하면 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 것이다.

사각형이 있고, 그 안에 좌표 (x, y)가 있다. 좌표에서 아래쪽 경계선까지 가는 거리는? x값과 같다. 그렇다면 좌표에서 위쪽 경계선까지 가는 거리는 w - x와 같다. 같은 방식으로 왼쪽 오른쪽 경계선까지 가는 거리를 구해준다. 그 넷 중 가장 작은 값을 꺼내면 된다. 우선순위 큐에서 우선순위가 가장 높은 값을 꺼내는 peek()메소드를 사용해서 최솟값을 꺼내어 출력한다.

profile
이것저것 공부중

0개의 댓글