✨APS (Algorithm Problem Solving)/프로그래머스

[프로그래머스] LV.0 직사각형 넓이 구하기/ 자바(JAVA), 파이썬(Python)

Nyan cat 2022. 10. 5. 20:09

📜 문제 설명

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 

 

프로그래머스

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

programmers.co.kr

 

💡 문제 풀이

"직사각형" 이라서 쉽게 풀 수 있는 문제이다. 마름모가 테케에 포함되어 있었으면 난이도가 확 올라갔을 문제인데 직사각형이라는 전제 조건이 있어서 쉽게 풀 수 있다. 다만 변수로 주어지는 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;
    }
}

 

자바 개발자로 업무를 하고 있긴 하지만 항상 알고리즘 문제는 파이썬으로만 풀어서 파이썬에 비해 자바 코드가 뚝딱거리는 느낌이 있다..

더 친해지고 싶다 자바야!!

반응형