내 코드
def solution(dots):
[[x1, y1], [x2, y2], [x3, y3], [x4, y4]] = dots
a = max(x1, x2, x3, x4) - min(x1, x2, x3, x4)
b = max(y1, y2, y3, y4) - min(y1, y2, y3, y4)
return a*b
코드설명
- dots 배열에서 네 점의 좌표를 각각 변수 x1, y1, x2, y2, x3, y3, x4, y4로 분리합니다.
- x1, x2, x3, x4의 최대값과 최소값의 차이를 구해 직사각형의 가로 길이 a를 계산합니다.
- y1, y2, y3, y4의 최대값과 최소값의 차이를 구해 직사각형의 세로 길이 b를 계산합니다.
- 가로와 세로를 곱해 직사각형의 넓이를 반환합니다.
특징
- 네 점의 좌표를 각각 변수로 분리하여 이해하기 쉽게 작성되었습니다.
- 직관적으로 max와 min을 사용하여 범위를 계산합니다.
- 변수 a와 b를 명시적으로 선언해 가독성을 높였습니다.
다른 코드
def solution(dots):
return (max(dots)[0] - min(dots)[0]) * (max(dots)[1] - min(dots)[1])
코드설명
- max(dots)는 x와 y 값 모두 가장 큰 좌표를 반환하고, min(dots)는 가장 작은 좌표를 반환합니다.
- max(dots)[0]과 min(dots)[0]의 차이는 직사각형의 가로 길이입니다.
- max(dots)[1]과 min(dots)[1]의 차이는 직사각형의 세로 길이입니다.
- 가로와 세로를 곱해 직사각형의 넓이를 반환합니다.
특징
- dots 배열을 최대값과 최소값으로 처리해 간결하게 문제를 해결합니다.
- 따로 좌표를 분리하지 않고 max와 min의 결과를 바로 사용하는 방식입니다.
- 코드 길이가 짧아 간결하지만, 각 좌표를 정확히 이해하려면 약간의 추가적인 해석이 필요합니다.
두 코드 비교
- 가독성
- 내 코드는 좌표를 각각 분리하고 변수명을 사용해 이해하기 쉽습니다.
- 다른 코드는 한 줄로 작성되어 간결하지만, max(dots)와 min(dots)의 동작 방식을 알아야 이해가 가능합니다.
- 효율성
- 다른 코드는 max와 min 연산을 한 번씩만 수행하여 더 효율적입니다.
- 내 코드는 max와 min을 각각 두 번씩 호출하므로 약간의 연산 오버헤드가 있습니다.
- 코드 길이
- 내 코드는 좀 더 설명적이며 길이가 깁니다.
- 다른 코드는 최소한의 코드로 작성되어 더 간단합니다.
결론
두 코드 모두 문제를 올바르게 해결합니다.
- 초보자나 가독성을 중요시하는 경우 내 코드가 더 적합합니다.
- 최적화와 간결함을 중시한다면 다른 코드가 더 적합합니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 캐릭터의 좌표 (2) | 2024.12.24 |
---|---|
프로그래머스 | Python | 로그인 성공? (0) | 2024.12.23 |
프로그래머스 | Python | OX퀴즈 (0) | 2024.12.19 |
프로그래머스 | Python | 외계어 사전 (0) | 2024.12.17 |
프로그래머스 | Python | 암호 해독 (0) | 2024.12.17 |