[백준/파이썬] 15923번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 15923번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
건축학개론을 수강한 욱제는 선린의 매점 앞에 지어질 새로운 건물의 설계를 맡았다. 욱제는 건축학개론 수업에서 수지를 만나 행복하지만, C-를 받을 정도로 건축에 소질이 없다.
컴퓨터학부에 재학중인 욱제는 이 건물의 설계도를 그림이 아니라 선분과 선분이 만나는 꼭짓점들의 좌표로 관리하고 있다고 한다. 이 설계도는 건물의 바닥 부분만을 나타낸 밑면도(저면도)이다. 하지만 프로그래밍 역시 C-인 욱제는 자신이 설계한 건물의 둘레를 구할 방도를 찾지 못해 발을 동동 구르고 있다.
욱제가 설계한 건물은 어느 방향에서 보아도 가운데가 파인 부분이 없는 직각으로 볼록한 닫힌 곡선 모양이다. 단순한 타원을 디지털화 한 모양이라고 이야기 할 수 있겠다. 욱제의 설계도는 2차원 좌표평면 위의 격자에 꼭 맞게 표현된다. (이런 모양을 영어로는 orthogonally convex rectilinear polygon이라고 한다)
욱제는 당신에게 밑면도의 모든 꼭짓점의 좌표들을 넘겨주며 도움을 요청하였다. …
입력 요약
첫째 줄에 꼭짓점의 개수 N이 주어진다. (4 ≤ N ≤ 20)
이후 둘째 줄 부터 N개의 줄에 걸쳐 꼭짓점의 좌표 (x, y)가 주어진다. 좌표는 40 이하의 음이 아닌 정수이며, 중복되는 좌표는 주어지지 않는다.
출력 요약
욱제가 설계한 건물의 둘레의 길이를 출력한다.
코드
r=int(input())
l=[list(map(int,input().split()))for i in range(r)]
s=0
for i in range(r):s+=int(((l[i][0]-l[(i+1)%r][0])**2+(l[i][1]-l[(i+1)%r][1])**2)**.5)
print(s)
설명
핵심은 구현 관점에서 건축학개론을 수강한 욱제는 선린의 매점 앞에 지어질 새로운 건물의 설계를 맡았다. 욱제는 건축학개론 수업에서 수지를 만나 행복하지만, C-를 받을 정도로 건축에 소질이 없다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기