본문 바로가기
프로그래밍/프로그래머스

Lv1_[최소직사각형, C++] 풀이 및 알고리즘 정리 - 프로그래머스

by 워킹독 2023. 1. 14.
728x90

 

 

프로그래머스

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

programmers.co.kr

문제 내용, 조건, 예시는 프로그래머스 사이트 참조


알고리즘

모든 조건을 만족하기 위해서는 가로(w), 세로(h)의 크기가 가장 큰 것을 선택해야한다.

 

가로,세로 중에 길이가 긴부분을 가로짧은 부분을 세로로 설정한 후에 비교 (반대로해도 상관은 없음)

크기에 맞춰 정렬

 

정렬이 완료가 되었으면 가로 중에 가장 큰 길이, 세로 중에 가장 큰 길이를 뽑으면 "최소직사각형"을 출력한 수 있습니다.

  • 가로 큰 길이 : 80
  • 세로 큰 길이 : 50
  • 최소직사각형 = 80 x 50 = 4000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int solution(std::vector<std::vector<int>> sizes) {
    int answer = 0;
    int coor[2= { 00 }; // w, h
 
    for (auto item : sizes) {
        std::sort(item.begin(), item.end(), std::less<int>());
        coor[0= max(coor[0], item[0]);
        coor[1= max(coor[1], item[1]);
    }
 
    answer = coor[0* coor[1];
    return answer;
}
cs

 

↓↓↓↓↓↓ 유익했다면 하트 뿅 ♥ ↓↓↓↓↓↓

 

728x90
반응형

댓글