📜 문제 설명
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다.
직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
제한사항
- dots의 길이 = 4
- dots의 원소의 길이 = 2
- -256 < dots[i]의 원소 < 256
- 잘못된 입력은 주어지지 않습니다.
입출력 예
[[1, 1], [2, 1], [2, 2], [1, 2]] | 1 |
[[-1, -1], [1, 1], [1, -1], [-1, 1]] | 4 |
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120860
💡 문제 풀이
"직사각형" 이라서 쉽게 풀 수 있는 문제이다. 마름모가 테케에 포함되어 있었으면 난이도가 확 올라갔을 문제인데 직사각형이라는 전제 조건이 있어서 쉽게 풀 수 있다. 다만 변수로 주어지는 dots안에 주어지는 꼭짓점의 좌표들이 순서대로 주어지지 않는다.
그래서 각 변수를 모두 확인해서 (가장 큰 x 좌표 값 - 가장 작은 x 좌표 값) * (가장 큰 y 좌표 값 - 가장 작은 y 좌표 값)을 구해주면 풀 수 있는 문제이다.
파이썬 풀이
def solution(dots):
answer = 0
x_length = abs(max(dots[0][0],dots[1][0], dots[2][0], dots[3][0]) - min(dots[0][0],dots[1][0], dots[2][0], dots[3][0]))
y_length = abs(max(dots[1][1],dots[2][1], dots[0][1], dots[3][1]) - min(dots[1][1],dots[2][1], dots[0][1], dots[3][1]))
answer = x_length * y_length
return answer
자바 풀이
class Solution {
public int solution(int[][] dots) {
int answer = 0;
int xLength;
int yLength;
int xMinValue = 256;
int xMaxValue = -256;
int yMinValue = 256;
int yMaxValue = -256;
for (int i = 0; i < dots.length; i ++) {
if (dots[i][0] > xMaxValue) {
xMaxValue = dots[i][0];
} if (dots[i][0] < xMinValue) {
xMinValue = dots[i][0];
} if (dots[i][1] > yMaxValue) {
yMaxValue = dots[i][1];
} if (dots[i][1] < yMinValue) {
yMinValue = dots[i][1];
}
}
xLength = xMaxValue - xMinValue;
yLength = yMaxValue - yMinValue;
answer = xLength * yLength;
return answer;
}
}
자바 개발자로 업무를 하고 있긴 하지만 항상 알고리즘 문제는 파이썬으로만 풀어서 파이썬에 비해 자바 코드가 뚝딱거리는 느낌이 있다..
더 친해지고 싶다 자바야!!
반응형
'✨APS (Algorithm Problem Solving) > 프로그래머스' 카테고리의 다른 글
[프로그래머스] LV.3 네트워크/ 파이썬(Python) (0) | 2022.10.24 |
---|---|
[프로그래머스] LV.0 캐릭터의 좌표/ 자바(JAVA), 파이썬(Python) (0) | 2022.10.12 |
[프로그래머스] LV.0 OX게임/ 자바(JAVA), 파이썬(Python) (0) | 2022.10.04 |
[프로그래머스] LV.3 최고의 집합/ 파이썬(Python) (0) | 2022.10.04 |
[프로그래머스] LV.3 순위 / 파이썬(Python) (4) | 2022.09.29 |