프로그래머스 42842 - 카펫

문제 설명

생각 및 접근

사족

  • Leo의 눈썰미에 박수를 보낸다.

본문

  • yellow를 토대로 노란색의 카펫을 먼저 만들어본 뒤, 노란색의 카펫을 기준으로 갈색 카펫을 덧붙인다. 덧붙인 결과, brown과 갈색 카펫의 수가 같다면 정답이므로, 갈색 카펫의 크기를 반환하면 된다.
  • 노란색의 카펫을 만들기 위한 과정
    • 약수를 토대로 하였다.
  • 갈색 카펫을 덧붙인 뒤, 그 갯수를 세는 과정
    brown == (yellowWidth + 2) * 2 + (yellowHeight + 2) * 2 - 4

코드

#include <bits/stdc++.h>
using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer;

    for(int i = 1; i <= yellow; i++){
        if(yellow % i == 0){
            int yellowWidth = max(i, yellow / i);
            int yellowHeight = min(i, yellow / i);

            if(brown ==  (yellowWidth + 2) * 2 + (yellowHeight + 2) * 2 - 4){
                answer.push_back(yellowWidth + 2);
                answer.push_back(yellowHeight + 2);
                break;
            }
        }
    }

    return answer;
}

채점 결과

+ Recent posts