[백준] 1085번 : 직사각형에서 탈출 (🥉브론즈 3) (Python)

2023. 1. 21. 00:38·◼ PS Note/백준
반응형

문제 바로 가기

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

 

 


풀이 1

  • 사용 언어 : Python
  • 풀이한 날짜 : 2022-03-09
x, y, w, h = tuple(map(int, input().split()))
dist = [x, y, (h - y), (w - x)]

min = 1000
for elem in dist:
  if elem < min:
    min = elem

print(min)

 

풀이 로직

  • 우선 조건을 통해 x, y의 위치가 직사각형 내부에 위치해있음을 알아야 한다.
  • 점 (x, y)에서 직사각형 경계선으로 가는 방법은 상하좌우로 4가지가 있는데, 각각의 길이는 모두 x, y, w, h로 표현할 수 있다. (아래 사진 참고)
  • 각각의 길이 값을 리스트에 저장하고 가장 작은 값을 정렬을 통해 찾아주면 답을 얻을 수 있다.

 

문제 접근 과정 및 느낀점

  • 처음엔 조건을 제대로 보지 않아 점의 위치가 직사각형 밖인 경우도 고려해야 하나 싶었다.
  • 하지만 다시 조건을 꼼꼼히 살펴보면서 생각을 빠르게 수정할 수 있었다.
  • 직사각형 내부에 점이 있는 경우만 따지면 된다는 것을 안 이후, 2가지 풀잇법이 떠올랐다.
    • 4가지 경로를 모두 조사하여 최솟값을 정렬 비교로 찾기
    • 직사각형을 닮음 모양이 되도록 4등분한다 가정할 때 생기는 경계선을 기준으로 4가지 case로 분류하기
  • 그러나 후자의 풀이는 전자에 비해 더 복잡할 것 같고, 그런다고 코드나 논리가 더 나을 것 같지도 않아 보였다. 따라서 전자의 경우를 택했다.

 

  • 코드를 작성할 떄는 일부러 내장 함수를 쓰지 않고 정렬 과정을 직접 구현했다.

 

  • ✨ 조건을 꼼꼼히 따진 점, 가능한 풀이를 떠올리고 어떤 풀이가 더 나을지 빠르게 판단한 점 모두 Nice 했다. 👍
  • 앞으로도 PS 시 이런 사고 방식대로 하면 될 것 같다.

 


풀이 2 (모범 답안 참고)

답안 출처

  • 사용 언어 : Python
  • 풀이한 날짜 : 2022-03-09

 

x, y, w, h = map(int, input().split())
print(min(x, y, w-x, h-y))

풀이 로직

  • 내 풀이와 동일하다. 다만 내장 함수를 이용해서 코드 길이를 더 줄였다.

 

반응형

'◼ PS Note > 백준' 카테고리의 다른 글

[백준] 2480번 : 주사위 세개 (🥉브론즈 4) (JavaScript)  (0) 2023.01.21
[백준] 2738번 : 행렬 덧셈 (🥉브론즈 5) (JavaScript)  (2) 2023.01.21
[백준] 1152번 : 단어의 개수 (🥉브론즈 2) (Python)  (0) 2023.01.21
[백준] 1978번 : 소수 찾기 (🥈실버 4) (Python)  (2) 2023.01.21
[백준] 1748번 : 수 이어 쓰기 1 (🥈실버 3) (Python)  (2) 2023.01.21
'◼ PS Note/백준' 카테고리의 다른 글
  • [백준] 2480번 : 주사위 세개 (🥉브론즈 4) (JavaScript)
  • [백준] 2738번 : 행렬 덧셈 (🥉브론즈 5) (JavaScript)
  • [백준] 1152번 : 단어의 개수 (🥉브론즈 2) (Python)
  • [백준] 1978번 : 소수 찾기 (🥈실버 4) (Python)
SangYoonLee (SYL)
SangYoonLee (SYL)
Slow, But Steady Wins The Race 😎
    반응형
  • SangYoonLee (SYL)
    ◆ Slow, But Steady ◆
    SangYoonLee (SYL)
  • 전체
    오늘
    어제
    • ◻ 전체 글 수 : (132)
      • ✪ 취미, 경험 회고 및 일상 (26)
        • [취미] Room Escape (2)
        • [회고] IT 관련 경험 회고 (18)
        • [일상] 일상 생각 (4)
        • [일상] 독후감 (1)
      • ◼ FrontEnd (30)
        • Web & HTML, CSS (9)
        • JavaScript (4)
        • TypeScript (1)
        • ReactJS (16)
      • ◼ CS (3)
        • 자료구조 & 알고리즘 (1)
        • 컴퓨터 구조 (1)
        • 운영체제 (1)
      • ◼ PS Note (40)
        • 백준 (38)
        • 프로그래머스 (2)
      • ◼ IT Etc. (33)
        • (Until 2021) (21)
        • Python (6)
        • C | C# | C++ (1)
        • Git (1)
        • Unity (4)
        • Game Dev. (0)
  • 블로그 메뉴

    • 홈
    • 💻 GitHub
    • 🟢 Velog
    • 🧩 온라인 방탈출 출시 작품 모음
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    백준
    프로그래머스
    소수 구하기
    미궁 게임
    1929
    코딩 일기
    알고리즘
    더라비린스
    관심사의 분리
    wecode
    개인 프로젝트
    CodeSoom
    리엑트
    React
    주간 회고
    유니티
    JavaScript
    C++
    unity
    파이썬
    Cpp
    pygame
    회고
    방탈출고사
    Component
    프로젝트
    후기
    Python
    위코드
    코드숨
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
SangYoonLee (SYL)
[백준] 1085번 : 직사각형에서 탈출 (🥉브론즈 3) (Python)
상단으로

티스토리툴바