프로그래머스 - 카펫

phoenixKim·2021년 8월 19일
0

풀이전략

  1. 테두리의 갈색은 한줄이다.
  2. 가로의 길이는 세로보다 크거나 같다.

문제를 읽고 그림을 그려보면서 공통점을 찾아보면
일단
(yellow의 가로 2) + (yellow의 세로 2) + 4 => brown의 갯수
라는 것을 찾을 수 있다.

yellow의 개수만을 이용한 경우의 수 즉 (가로, 세로)를 이용해 brown의 수와 동일한지 확인만 하면 된다.

예를 들어 yellow 가 24이면
(1,24),(2,12),(3,8),(4,6),(6,4),(8,3),(12,2),(24,1)
이렇게 되는데 앞에 친구가 가로 라면
(6,4)~ 부터 시작하면 된다.
이거를 코드로 표현만 하면된다!

소스코드

#include <string>
#include <vector>
#include <cmath>
using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    
    //가로
    int row = 0;
    //세로
    int col = 0;
    
    for(int i = yellow; i > 0; i--)
    {
        if(yellow % i == 0)
        {
            row = i;
            col = yellow / i;
            
            if(row * 2 + col * 2 + 4 == brown)
            {
                answer.push_back(row + 2);
                answer.push_back(col + 2);
                break;
            }
        }
        else
        {
            continue;
        }
    }
    
    
    return answer;
}

profile
🔥🔥🔥

0개의 댓글

관련 채용 정보