문제이름 - 난이도
문제
풀이전략
- 테두리는 갈색, 안에 부분은 노란색이다. 이때 w와 h를 찾아야 한다.
- 문제에서 brown과 yellow가 주어지기 때문에 이 값으로 전체 사각형의 크기를 알 수 있다.
- 문제에서 yellow는 1이상이므로 직사각형의 height는 반드시 3이상이다.
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool check(int b, int y, int w, int h){
if(h < 3) return false;
// 들어온 w와 h가 brown과 yellow의 조건을 만족하는지를 찾는 부분
if((2*w + (h-2)*2) == b) return true;
return false;
}
vector<int> solution(int brown, int yellow) {
vector<int> answer;
int whole = brown+yellow;
// height는 반드시 3이상이므로 i=3부터 시작하며, whole/3까지만 반복하면 된다.
for(int i=3; i<=whole/3; i++){
if((whole % i) == 0){
if(check(brown, yellow, i, whole/i)){
answer.push_back(whole/i);
answer.push_back(i);
break;
}
}
}
return answer;
}
소감
if((2*w + (h-2)*2) == b) return true;
단순한 조건이지만 이렇게 수학적으로 해결하는 부분이 좋았다.
Author And Source
이 문제에 관하여(문제이름 - 난이도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gomster_96/프로그래머스-문제이름-난이도-opgjwe8k저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)