본문 바로가기
코딩테스트/프로그래머스 입문

[코딩테스트 Lv.0] 직사각형 넓이 구하기

by 블루데이제이 2024. 2. 2.
728x90
반응형

2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.

제한사항

dots의 길이 = 4
dots의 원소의 길이 = 2
-256 < dots[i]의 원소 < 256
잘못된 입력은 주어지지 않습니다.

 

입출력 예

dots					result
[[1, 1], [2, 1], [2, 2], [1, 2]]	1
[[-1, -1], [1, 1], [1, -1], [-1, 1]]	4

 

입출력 예 설명

입출력 예 #1
좌표 [[1, 1], [2, 1], [2, 2], [1, 2]] 를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 1, 1이므로 직사각형의 넓이는 1 x 1 = 1입니다.

입출력 예 #2
좌표 [[-1, -1], [1, 1], [1, -1], [-1, 1]]를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 2, 2이므로 직사각형의 넓이는 2 x 2 = 4입니다.

내 풀이

[Java]

class Solution {
    public int solution(int[][] dots) {
        int answer = 0;
        
        int max[] = {-256, -256};
        int min[] = {256, 256};
        
        for(int i = 0; i < dots.length; i++){
            if(dots[i][0] > max[0]){
                max[0] = dots[i][0];
            }
            
            if(dots[i][0] < min[0]){
                min[0] = dots[i][0];
            }
            
            if(dots[i][1] > max[1]){
                max[1] = dots[i][1];
            }
            
            if(dots[i][1] < min[1]){
                min[1] = dots[i][1];
            }
        }
        
        int x = max[0] - min[0];
        int y = max[1] - min[1];
        
        answer = x * y;
        
        
        return answer;
    }
}

 

[C]

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// dots_rows는 2차원 배열 dots의 행 길이, dots_cols는 2차원 배열 dots의 열 길이입니다.
int solution(int** dots, size_t dots_rows, size_t dots_cols) {
    int answer = 0;
        
    int max = -256;
    int min = 256;
    
    for(int i = 0; i < dots_rows; i++){
        
        if(dots[i][0] > max){
            max = dots[i][0];
        }
        
        if(dots[i][0] < min){
            min = dots[i][0];
        }
    }
    
    int x = max - min;
    
    max = -256;
    min = 256;
    
    for(int i = 0; i < dots_rows; i++){
        
        if(dots[i][1] > max){
            max = dots[i][1];
        }
        
        if(dots[i][1] < min){
            min = dots[i][1];
        }
    } 
    int y = max - min;
    
    answer = x * y;
    
    return answer;
}

 

[Python]

def solution(dots):
    answer = 0    
    
    x = max(dots)[0] - min(dots)[0]
    y = max(dots)[1] - min(dots)[1]
    
    answer = x * y
    
    return answer

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형