새소식

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

[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; }
Contents

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

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