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

2023. 1. 21. 00:38·◼ PS Note/백준
목차
  1. 문제 바로 가기
  2. 풀이 1
  3. 풀이 2 (모범 답안 참고)
반응형

문제 바로 가기

 

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
  1. 문제 바로 가기
  2. 풀이 1
  3. 풀이 2 (모범 답안 참고)
'◼ 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)
      • ✪ 취미, 경험 회고 및 일상 (26)
        • [취미] Room Escape (2)
        • [회고] IT 관련 경험 회고 (18)
        • [일상] 일상 생각 (4)
        • [일상] 독후감 (1)
      • ◼ FrontEnd (31)
        • Web & HTML, CSS (10)
        • 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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.