- 문제 풀이
"완전 탐색"을 사용하는 문제였다.
1. (brown+ yellow)값을 숫자 두개의 곱으로 만들기
2. 3부터 시작하는 for문 만들며 탐색함, yellow가 1부터 시작하기 때문에 그걸 둘러싸려면 전체 높이는 최소 3
3. if문을 통해 조건 걸기, (가로*세로=sum) 이기 때문에 전체 가로 값은 나누어 떨어져야 함
4. 3의 조건을 만족한다면 전체 가로 값 계산하기
5. sum을 소인수분해할 수 있는 경우는 여러가지기 때문에 소인수분해로 구한 두 숫자가 red의 조건에 만족하는지 확인하기
- 코드
제출한 코드는 다음과 같다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
//(brown+ yellow)값을 숫자 두개의 곱으로 만들기
int sum = brown+yellow;
for (int height = 3; ; height++) { //yellow가 1부터 시작하기 때문에 그걸 둘러싸려면 전체 높이는 최소 3
if (!(sum % height)) { //(가로*세로=sum) 이기 때문에 전체 가로 값은 나누어 떨어져야 함
int weight = sum / height; //전체 가로 값 계산하기
if (((height - 2) * (weight - 2)) == yellow) {
answer.push_back(weight);
answer.push_back(height);
break;
}
}
}
return answer;
}
(코드 참고: https://mungto.tistory.com/43 )
'프로그래머스' 카테고리의 다른 글
| 모음사전 - 프로그래머스, c++ (0) | 2023.02.04 |
|---|---|
| 피로도 - 프로그래머스, c++ (0) | 2023.02.03 |
| 더 맵게 - 프로그래머스, c++ (0) | 2023.02.01 |
| 소수 찾기 - 프로그래머스, c++ (0) | 2023.01.31 |
| 모의고사 - 프로그래머스, c++ (0) | 2023.01.30 |