https://school.programmers.co.kr/learn/courses/30/lessons/120860
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제 설명]
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
제한사항
- dots의 길이 = 4
- dots의 원소의 길이 = 2
- -256 < dots[i]의 원소 < 256
- 잘못된 입력은 주어지지 않습니다.
[나의 풀이]
def solution(dots):
a = []
b = []
for i in range(0,len(dots)):
a.append(dots[i][0])
b.append(dots[i][1])
return (max(a)-min(a))*(max(b)-min(b))
[다른 풀이]
def solution(dots):
return (max(dots)[0] - min(dots)[0])*(max(dots)[1] - min(dots)[1])
max(dots) 좌표가 1시방향 끝점, min(dots) 좌표가 5시 방향 끝점임을 이용해서 각 X축과 Y축의 값을 뺀 값을 곱하면 직사각형의 넓이가 나온다.
def solution(dots):
x, y = [], []
for dot in dots:
x.append(dot[0])
y.append(dot[1])
return (max(x) - min(x)) * (max(y) - min(y))
def solution(dots):
answer = 0
for i in range(1, len(dots)):
if dots[i][1] == dots[0][1]:
width = abs(dots[i][0] - dots[0][0])
if dots[i][0] == dots[0][0]:
height = abs(dots[i][1] - dots[0][1])
answer = width * height
return answer
한점을 기준으로 잡고 x좌표가 같으면 y좌표값의 차를 height로, y좌표가 같으면 x좌표값의 차를 width로 구하는 방식
def solution(dots):
dots.sort(key= lambda x: [x[0],x[1]])
return (dots[3][0]-dots[0][0])*(dots[3][1]-dots[0][1
'프로그래머스 > 파이썬_입문' 카테고리의 다른 글
캐릭터의 좌표 (0) | 2024.11.23 |
---|---|
최댓값 만들기 (2) (0) | 2024.11.22 |
잘라서 배열로 저장하기 (0) | 2024.11.19 |
머쓱이보다 키 큰 사람 (0) | 2024.11.18 |
중복된 숫자 개수 (0) | 2024.11.18 |