프로그래머스 2레벨 42842 카펫 JAVA

문제

링크 : https://programmers.co.kr/learn/courses/30/lessons/42842

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

carpet.png

Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

풀이

브루트포스 방식으로 풀었다.

각 반복문에서 첫번째와 마지막 줄의 cal 즉 가로길이를 고정시키고

조건에 맞지 않으면 cal을 증가시켜 cal의 개수가 일치할 때까지 반복했다.

이는 가로길이에 의해 노란색이 결정되기 때문에 선택한 방식이다.✍

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class Solution {
public int[] solution(int brown, int yellow)
{
int[] answer = new int[2];
int curRow = 1;
int curCal = 3;
while(true)
{
int tmpRow = 1;
int tmpCal = curCal;
int tmpBrown = 0;
int tmpYellow = 0;

while(true)
{
//첫줄이거나 yellow가 다 충족된 경우 마지막줄임
if(tmpRow == 1 || tmpYellow >= yellow)
{
tmpBrown += curCal;
if(tmpYellow >= yellow)
{
break;
}

}
else
{
tmpBrown+=2;
tmpYellow += curCal - 2;
}
tmpRow++;
}
if(brown == tmpBrown && tmpYellow == yellow)
{
answer[0] = tmpRow;
answer[1] = curCal;
break;
}
curCal++;
}
return answer;
}
}

메모

스스로 풀었는가 : ✅

프로그래머스 2레벨 42842 카펫 JAVA

https://praisebak.github.io/2021/07/15/2021-07/p42842/

Author

Praisebak

Posted on

2021-07-15

Updated on

2021-07-15

Licensed under

Comments