-
[Algorithm] 프로그래머스 카펫 - C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2022. 3. 1. 17:11반응형
#include <string> #include <vector> using namespace std; vector<int> solution(int brown, int yellow) { vector<int> answer; int size = brown + yellow; for(unsigned height = 3; height < size; height++){ if(size % height == 0){ int width = size / height; int widthY = width - 2; int heightY = height - 2; if(widthY * heightY == yellow){ answer.push_back(width); answer.push_back(height); break; } } } return answer; }
일단 brown이 최소 8개있다고 했으며 이를 통해 높이의 최소가 3임을 알 수 있습니다. 그래서 for문을 3부터 시작해서 돌리게 되며 여기서
- 전체 사이즈 / height에서 나머지가 없이 딱 떨어질 때
- 그 중에서도 brown을 제외한 height-2, width-2를 서로 곱했을 때 yellow 가 나올때
정답이 나오게 됩니다. 혹시나 높이 말고 가로 먼저 탐색하면 안되나 하고 코드를 짜신다면 문제 조건중에서
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
라는 조건이 있으니 참고해주시면 될 것 같습니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
[Algorithm] 프로그래머스 기능개발 - C++ (0) 2022.03.02 [Algorithm] 프로그래머스 가장 큰 정사각형 찾기 - C++ (0) 2022.03.01 [Algorithm] 프로그래머스 단속카메라 - C++, 그리디 (0) 2022.03.01 [Algorithm] 백준 2887 행성 터널 - C++, 크루스칼 알고리즘 (0) 2022.02.28 [Algorithm] 백준 10026 적록색약 - C++, BFS (0) 2022.02.27