[코딩 테스트 연습 입문] 직사각형 넓이 구하기

2022. 12. 29. 17:41code/[프로그래머스] python

문제

2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.

 

❗제한사항

  • dots의 길이 = 4
  • dots의 원소의 길이 = 2
  • -256 < dots[i]의 원소 < 256
  • 잘못된 입력은 주어지지 않습니다.

 

입출력 예

 

입출력 예 설명

입출력 예 #1

  • 좌표 [[1, 1], [2, 1], [2, 2], [1, 2]] 를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 1, 1이므로 직사각형의 넓이는 1 x 1 = 1입니다.

입출력 예 #2

  • 좌표 [[-1, -1], [1, 1], [1, -1], [-1, 1]]를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 2, 2이므로 직사각형의 넓이는 2 x 2 = 4입니다.

 

✔풀이

def solution(dots):
    
    x=[dots[0][0],dots[1][0],dots[2][0],dots[3][0]]
    x.sort()
    max_x,min_x=x[-1],x[0]
    
    y=[dots[0][1],dots[1][1],dots[2][1],dots[3][1]]
    y.sort()
    max_y,min_y=y[-1],y[0]
    
    answer=abs(max_x-min_x) * abs(max_y-min_y)
    
    return answer

📝설명

이중 리스트의 인덱스로 x좌표와 y좌표를 각각 꺼내어 정렬한 후, 가장 큰 값과 작은 값을 도출해낸다. 

가장 큰 값과 가장 작은 값을 구한 후, 뺀 값에 절댓값을 씌운 후 그 값들을 곱해주면 된다.

 

👑모범 답안

🔎max(dots)[0]은 각각의 리스트 인덱스 넘버 0에서 가장 큰 값을 불러온다.

마찬가지 각각의 x좌표와 y좌표의 최댓값과 최솟값을 구한 후 x끼리 빼고, y끼리 뺀 후 곱하면 된다.

 

👀느낀 점

: 이중 리스트에 대해 완벽히 숙지되지 않은 상태에서 풀다 보니 자연스레 코딩의 길이가 길어졌다.

하지만 분명 의미있는 과정이었다고.. 혼자 생각하고 있다..^^

이중 리스트에서도 max(내가 다른 이중 리스트)[각 리스트에서 원하는 인덱스 넘버]를 부르면 쉽게 비교할 수 있다는 걸 알게 되었다.

다음엔 야무지게 써먹어야지

 

💻 문제 출처

코딩테스트 연습 - 직사각형 넓이 구하기 | 프로그래머스 스쿨 (programmers.co.kr)