GitHubSeob
C++ / 프로그래머스 / 카펫 본문
문제 |
https://programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
문제풀이 |
yellow의 약수를 구한다.
각각의 약수에 +2를 더하고 곱한 값이 전체 블록의 수가된다.
이 값이 brown + yellow의 값과 같아지면 된다.
가로가 세로 길이 이상이어야 하고, idx는 1부터 시작하므로 몫을 가로로 둔다.
약수를 구하면서 몫+2, 나눈 수+2의 곱이 총 격자의 수와 같으면 그게 가로, 세로의 길이다.
코드 |
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
int idx(0), idx2(0), quotient(0);
for (idx = 1; idx * idx <= yellow; ++idx) {
if (yellow % idx == 0) {
quotient = yellow / idx;
if ((quotient + 2) * (idx + 2) == brown + yellow) {
return { quotient + 2, idx + 2 };
}
}
}
}
'Programmers > Level 2' 카테고리의 다른 글
C++ / 프로그래머스 / 피로도 (0) | 2022.04.23 |
---|---|
C++ / 프로그래머스 / 큰 수 만들기 (0) | 2022.04.23 |
C++ / 프로그래머스 / H-Index (0) | 2022.04.22 |
C++ / 프로그래머스 / 괄호 회전하기 (0) | 2022.04.20 |
C++ / 프로그래머스 / 예상 대진표 (0) | 2022.04.20 |