본문 바로가기

코테 공부/python

Python 직사각형 넓이 구하기

 

https://school.programmers.co.kr/learn/courses/30/lessons/120860/solution_groups?language=python3

이번에야 말로 포문도 안돌리는 생각하는 코드를 뽑아냈다..! 하며 자신있게 제출했다.

def solution(dots):
    
    width = max(abs(dots[0][0]-dots[1][0]), abs(dots[0][0]-dots[2][0]))
    height = max(abs(dots[0][1]-dots[1][1]), abs(dots[0][1]-dots[2][1]))
    
    return width * height

 

그런데 이렇게 max랑 min 함수가 이중 배열 안에 배열끼리도 비교를 할 수 있단걸 다른 사람 풀이 보고 처음 알았다.

처음에 뭐한거지.. 인덱스 별로 비교한것도 아니고 이게 뭐지 했는데

dots 이중배열 중에서 가장 큰 배열의 0번 인덱스 가장 작은 배열의 0번 인덱스 차이로 가로 길이를 구하고

1번 인덱스 끼리의 차이로 세로 길이를 구했다

def solution(dots):
    return (max(dots)[0] - min(dots)[0])*(max(dots)[1] - min(dots)[1])

이중배열에서 max 와 min은 내부 배열들의 0 인덱스끼리 먼저 비교하고 같으면 다음 인덱스 비교하고 이런 식인듯 하다

dots = [[2,5], [3,4], [7,4], [7,1]]

print(max(dots)[0]) #7
print(max(dots)[1]) #4
print(min(dots)[0]) #2
print(min(dots)[1]) #5

dots = [[4,1], [3,4], [4,4], [7,1]]

print(max(dots)[0]) #7
print(max(dots)[1]) #1
print(min(dots)[0]) #3
print(min(dots)[1]) #4

dots = [[1,7], [1,4], [5,4], [5,7]]

print(max(dots)[0]) #5
print(max(dots)[1]) #7
print(min(dots)[0]) #1
print(min(dots)[1]) #4