[백준] 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)
  • 전체
    오늘
    어제
    • ◻ 전체 글 수 : (133) N
      • ✪ 취미, 경험 회고 및 일상 (26)
        • [취미] Room Escape (2)
        • [회고] IT 관련 경험 회고 (18)
        • [일상] 일상 생각 (4)
        • [일상] 독후감 (1)
      • ◼ FrontEnd (31) N
        • Web & HTML, CSS (10) N
        • 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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바