본문 바로가기

알고리즘 스터디

[프로그래머스] 최소 직사각형 (C++)

728x90
반응형

프로그래머스 최소 직사각형

1. 문제

문제 링크

2. 접근법

[ 문제 접근 ]

 

수식만 잘 세우면 풀리는 문제였다.

가장 작은 지갑의 크기를 구하기 위해서는 가로는 입력받은 명함의 가로와 세로 중 큰 값 중 max이고, 세로는 입력받은 명함의 가로와 세로 중 작은 값의 max를 구하면 된다. 

3. 코드

#include <string>
#include <vector>

using namespace std;

int solution(vector<vector<int>> sizes) {
	int answer = 0;
	//r 세로, c 가로
	int r = 0, c = 0;

	for (auto size : sizes)
	{
		//세로는 둘 중 작은 값 중에 가장 큰 값
		r = max(r, min(size[0], size[1]));
		//가로는 둘 중 큰 값 중에 큰 값
		c = max(c, max(size[0], size[1]));
	}

	answer = (r * c);
	return answer;
}

4. 시간 복잡도

sizes는 최대 10000까지 입력받으므로 최대 10000번 수행한다.

5. 결과

728x90
반응형