새소식

코딩테스트/프로그래머스

[C++] 최소직사각형

  • -

[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/86491?language=cpp# 

 

프로그래머스

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

programmers.co.kr


[문제 풀이]

생각보다 까다로웠던 문제였다.

완전 탐색 유형인데 어떤걸 가져와야 하는지 처음에는 감이 잘 안왔다가 블로그들을 보고 알게 되었다.

 

우리가 구할 값은 모든걸 통틀어서 가장 긴 변과 가장 짧은 변 중에서 가장 긴 변을 곱한 값이다.

전자는 쉽게 생각이 되었지만 후자를 생각하는 것이 쉽지 않았던 문제.

그럼 이제 어떻게 가장 짧은 변 중에서 가장 긴 변을 구하는지에 관해서 접근을 해보자.

구할 값 =  max(구할 값, min(가로길이, 세로길이))

해당 방식을 보면 어느정도 감이 왔을 것이다.

가로길이와 세로길이 중에서 짧은 길이를 min을 통해 구하고 해당 길이를 구할 값에서의 max로 스스로 비교하면서 계속 변경해주자.


[코드]

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

using namespace std;

int solution(vector<vector<int>> sizes) {
    int answer = 0;
    int width = 0;
    int height = 0;
    for(int i = 0;i<sizes.size();i++){
        width = max(width, max(sizes[i][1],sizes[i][0]));
        height = max(height, min(sizes[i][1],sizes[i][0]));
    }
    answer = width * height;
    
    return answer;
}

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[C++] 위장  (0) 2022.12.03
[C++] 전화번호 목록  (0) 2022.12.03
[C++] 포켓몬  (0) 2022.12.03
[C++] 완주하지 못한 선수  (0) 2022.12.03
[C++] 모의고사  (0) 2022.11.15
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.