프로그래머스 | 직사각형 넓이 구하기 [파이썬 python]

2023. 3. 13. 13:32·Algorithm/프로그래머스

https://school.programmers.co.kr/learn/courses/30/lessons/120860

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

def solution(dots):
    dots.sort(key=lambda x: (x[0], x[1]))
    return abs(dots[0][0] - dots[3][0]) * abs(dots[0][1] - dots[3][1])

직사각형의 네 점의 좌표가 주어지면 직사각형의 넓이는 구하는 문제이다.

백준에서 비슷한 문제를 풀어본 기억이 있어 어렵지 않게 해결하였다.

 

리스트로 주어지는 네 좌표를 x 기준으로 먼저 정렬하고, x 가 같으면 y 기준으로 정렬해 주었다.

예를 들면 다음과 같다.

1. 네 점의 좌표 [[-1, -1], [1, 1], [1, -1], [-1, 1]]
2. x 좌표에 대해 정렬 [[-1, -1], [-1, 1], [1,1], [1, -1]]
3. y 좌표에 대해 정렬 [[-1, -1], [-1, 1], [1, -1], [1,1]]

크기순으로 정렬된 좌표에서 [0] 번 인덱스가 직사각형에서 왼쪽 아래에 위치하는 점이고, [3] 번 인덱스가 직사각형에서 오른쪽 위에 위치하는 점임을 알 수 있다.

 

그러므로, 왼쪽 아래에 위치한 x, y 값에서 오른쪽 위에 위치한 x, y값을 통해 직사각형의 가로길이와 세로길이를 구할 수 있다.

2차원 배열이므로 x값에는 [0][0], [3][0]과 같이 접근할 수 있고, 같은 방식으로 y값은 [0][1], [3][1]로 접근할 수 있다.

x값끼리 뺀 값에 절댓값을 취하면 가로길이가 되고, y값끼리 뺀 값에 절댓값을 취하면 세로 길이가 된다.

 

따라서, 직사각형의 넓이는 가로 × 세로이므로 두 값을 곱해 리턴해주면 답을 구할 수 있다.

반응형
저작자표시
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 다항식 더하기 [파이썬 python]
  • 프로그래머스 | 캐릭터의 좌표 [파이썬 python]
  • 프로그래머스 | 잘라서 배열로 저장하기 [파이썬 python]
  • 프로그래머스 | OX퀴즈 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 직사각형 넓이 구하기 [파이썬 python]
상단으로

티스토리툴바