ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 최소직사각형
    프로그래머스(Programmers) 2021. 10. 14. 22:32
    반응형

    문제설명

     

     

     

    제한사항

    • sizes의 길이는 1 이상 10,000 이하입니다.
      • sizes의 원소는 [w, h] 형식입니다.
      • w는 명함의 가로길이를 나타냅니다.
      • h는 명함의 세로 길이를 나타냅니다.
      • w와 h는 1 이상 1,000 이하인 자연수입니다.

     

     

    입출력 예 

     

     

    입출력 예 설명

    입출력 예 #1
    문제 예시와 같습니다.

    입출력 예 #2
    명함들을 적절히 회전시켜 겹쳤을 때, 3번째 명함(가로: 8, 세로: 15)이 다른 모든 명함보다 크기가 큽니다. 따라서 지갑의 크기는 3번째 명함의 크기와 같으며, 120(=8 x 15)을 return 합니다.

    입출력 예 #3
    명함들을 적절히 회전시켜 겹쳤을 때, 모든 명함을 포함하는 가장 작은 지갑의 크기는 133(=19 x 7)입니다.

     

     

     

    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    int solution(vector<vector<int>> sizes) {
        int maxWidth=0,maxHeight=0;
        for(int i=0; i<sizes.size(); i++)
        {
          sort(sizes[i].begin(), sizes[i].end());
          if(sizes[i][0] >= maxWidth)//최대가로길이보다 크면
          {
              maxWidth = sizes[i][0];
          }
          if(sizes[i][1] >= maxHeight)//최대세로길이보다 크면
          {
              maxHeight = sizes[i][1];
          }
        }
        int answer = maxWidth * maxHeight;
        return answer;
    }

    => (가로, 세로)가 들어있는 배열을 크기 순으로 정렬합니다. 

     

    => algorithm 헤더에 있는 sort함수를 사용하였습니다. 

     

    => 정렬한 이후에 가로중 가장 긴 길이와 세로 중 가장 긴 길이를 추출해냅니다. 

    => 가장 긴 가로 길이 (maxWidth)와 가장 긴 세로(maxHeight)를 곱하여 answer를 반환합니다.

    반응형

    '프로그래머스(Programmers)' 카테고리의 다른 글

    소수만들기  (0) 2021.11.10
    신규아이디 추천  (0) 2021.11.09
    복서 정렬하기 C++  (0) 2021.10.07
    모음사전 C++  (0) 2021.10.07
    상호 평가  (0) 2021.09.09

    댓글

Designed by Who.