쌓고 쌓다
[프로그래머스] 최소직사각형 C++ 풀이 본문
https://programmers.co.kr/learn/courses/30/lessons/86491?language=cpp
전체 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> sizes) {
int answer = 0;
int height=0; // 높이
int width=0; // 가로
for(int i=0;i<sizes.size();i++)
{
if(sizes[i][0]>sizes[i][1])
{
height=max(height,sizes[i][0]);
width=max(width,sizes[i][1]);
}
else
{
height=max(height,sizes[i][1]);
width=max(width,sizes[i][0]);
}
}
answer=height*width;
return answer;
}
한쪽 길이를 최대로 해주고, 한쪽 길이를 최소로 해준다면 최소 넓이를 구할 수 있습니다.
가로, 세로 길이가 주어질 때
height에 두 길이중 큰 길이를 넣고, width에는 작은 나머지 길이를 넣어
max() 함수를 통해 갱신해 나갈 것입니다.
if(sizes[i][0]>sizes[i][1])
{
height=max(height,sizes[i][0]);
width=max(width,sizes[i][1]);
}
위의 if문은 가로길이가 세로 길이보다 클때이므로 ( 가로길이 > 세로길이 )
가로길이(sizes[i][0])를 height와 비교하여 더 크다면 갱신해줍니다.
남은 길이는 width와 비교하여 갱신해줍니다.
아래의 else는 위의 if문은 반대 케이스로
"가로길이 < 세로길이"인 경우입니다.
else
{
height=max(height,sizes[i][1]);
width=max(width,sizes[i][0]);
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 부족한 금액 계산하기 C++ 풀이 (0) | 2022.07.04 |
---|---|
[프로그래머스] 나머지가 1이 되는 수 찾기 C++ 풀이 (0) | 2022.07.04 |
[프로그래머스] 예산 C++ 풀이 (0) | 2022.07.04 |
[프로그래머스] 약수의 개수와 덧셈 C++ 풀이 (0) | 2022.07.02 |
[프로그래머스] 실패율 C++ 풀이 (0) | 2022.07.02 |
Comments