[프로그래머스/C++]Lv.1 - 최소 직사각형

YH J·2023년 5월 14일
0

프로그래머스

목록 보기
83/168

문제 링크

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

내 풀이

각 원소마다 세로길이가 큰지 가로길이가 큰지 구분하여 large와 small에 넣어준 뒤 w와 h에 있는 값과 비교하여 크면 갱신해준다. 즉 가로 세로중 큰 값들 중에 가장 큰값과 작은값들 중 가장 큰값을 구하여 곱해준다.

내 코드

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

// sizes_rows는 2차원 배열 sizes의 행 길이, sizes_cols는 2차원 배열 sizes의 열 길이입니다.
int solution(int** sizes, size_t sizes_rows, size_t sizes_cols) {

    int w = 0, h = 0;
    for(auto i = 0; i < sizes_rows;i++)
    {
        auto large = (sizes[i][0] >= sizes[i][1]) ? sizes[i][0] : sizes[i][1];
        auto small = (sizes[i][0] >= sizes[i][1]) ? sizes[i][1] : sizes[i][0];
        w = (w >= large) ? w : large;
        h = (h >= small) ? h : small;
    }
    return w*h;
}

다른 사람의 풀이

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int solution(vector<vector<int>> sizes)
{
    int answer=0;

    int w=0, h=0;
    for(int i=0; i<sizes.size(); i++)
    {
        w=max(w,min(sizes[i][0],sizes[i][1]));
        h=max(h,max(sizes[i][0],sizes[i][1]));
    }
    answer=w*h;

    return answer;
}

다른 사람의 풀이 해석

large와 small을 따로 구하지 않고 max와 min함수를 사용하여 바로바로 해주었다.

profile
게임 개발자 지망생

0개의 댓글