알고리즘/Programmers

[프로그래머스/C++] 카펫

chaeD2 2022. 7. 16. 17:19

(7/16 - O)

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

구현

갈색을 테두리로, 카펫을 i행 j열로 생각하고 풀이했다.

 

 

코드

#include <string>
#include <vector>

using namespace std;

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

    vector<vector<int>> v;

    // i행 j열 바둑판이라 생각하자.
    // 테두리이므로 j의 최솟값은 y + 2
    int i = 3, j = 3;
    while (true) {
        int line = (brown - (j * 2)) / 2;
        int y_cnt = line * (j - 2);
        if (y_cnt == yellow) {
            i = line + 2;
            break;
        }
        j++;
    }
    if (i > j) {
        int temp = j;
        j = i;
        i = temp;
    }

    answer.push_back(j);
    answer.push_back(i);
    return answer;
}

int main()
{
    solution(24, 24);
}