프로그래머스/파이썬_입문

직사각형 넓이 구하기

싱싱한복초이 2024. 11. 21. 10:27

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