hyunjin

[level 2] 카펫 본문

알고리즘 연습/프로그래머스

[level 2] 카펫

_h.j 2020. 8. 5. 14:17
728x90

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

 

첫 번째 방법

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    int br = (brown +4)/2;
    for(int y = 3,x= br-y; y < br && x>=3; y++){
        x = br-y;
        if(  (y-2)* (x-2) == yellow){
            answer.push_back(x);
            answer.push_back(y);
            break;
        }
    }
    return answer;
}

 

풀이 방법

문제의 제한 사항을 보니 brown의 범위가 yellow 보다 작아서 brown 기준으로 문제를 풀었다.

brown의 x,y가 될 수 있는 것 중 곱했을 때 yellow가 나오는 쌍을 찾았다.

 

 

2단계 치고 쉬운 문제였다.

다른 사람들의 풀이도 나와 크게 다르지 않았다.

 

 

복잡도 계산해보기

시간 복잡도 : 브라운을 n이라 할 때 더해서 n을 만들 수 있는 조합으로 for문을 돌리니까 O(n)

전체 넓이가 n이라하면 모르겠다.

 

 

 

 

 

728x90