https://school.programmers.co.kr/learn/courses/30/lessons/42842
조건
제한시간 : 45분 이내
규칙을 찾으면 되는 문제였다.
생각했던 Flow를 적어보도록 하겠다.
1. brown + yellow == return 값 두 데이터의 곱이다.
2. 일단 brown + yellow 더한 값을 for문을 통해 i가 1부터 시작해서 i로 나눠 떨어지는 여러 두 수 중 한 가지 경우가 답이다.
3. 정사각형, 직사각형 어떤 도형이 될진 모르겠지만, 세로는 무조건 3 이상이여야 한다. 즉, i는 3부터 시작하면 되겠다.
4. i를 세로라 생각하고, 가로는 brown+yellow/i(세로) 라 생각하기
5. 가로 세로를 가지고 brown, yellow 규칙 찾아보기
6. (가로 * 2) + (세로 * 2) - 4 를 하게 되면, 우리가 알고 있는 brown 값을 찾을 수 있음
7. 찾은 brown 값을 가지고 brown + yellow (입력 받은 값) - brown(찾은 값) 하면 yellow 를 찾을 수 있음
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int totalCnt = brown + yellow;
for (int i = 3; i < totalCnt; i++) {
if(totalCnt % i == 0) {
int w = totalCnt / i;
int h = i;
int x = (w * 2) + (h * 2) - 4;
if(x == brown) {
answer[0] = w;
answer[1] = h;
break;
}
}
}
return answer;
}
}
다른 방법
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
for(int i = 1; i <= yellow; i++)
{
if(yellow % i == 0)
{
if(2 * i + (2 * yellow / i) == brown - 4)
{
answer[0] = i + 2;
answer[1] = yellow / i + 2;
}
}
}
}
}
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 *Java] 영어 끝말잇기 (0) | 2022.07.28 |
---|---|
[프로그래머스 *Java] - 큰 수 만들기 (0) | 2022.07.23 |
[프로그래머스 *Java] - 위장 (0) | 2022.07.20 |
[프로그래머스 *Java] - H-Index (0) | 2022.07.20 |
[프로그래머스 *Java] - 2 x n 타일링 (0) | 2022.07.18 |