프로그래머스 (카펫_JAVA)

김승연·2021년 2월 15일
0

알고리즘스터디

목록 보기
4/11


문제설명

테두리는 갈색, 가운데는 노란색으로 이루어진 카펫 격자갯수를 구하는 문제.

문제 풀이 방법

입출력 예를 살펴 보니...
브라운 테두리를 대각선으로 자른다는 기준으로..
브라운 갯수 /2 해서 +1을 한다..
그걸 다시 2로 나누면 세로 값이 나오고 위의 값에서 세로값 뺀것이 가로값이 된다..
예로.. 24일 경우.. /2+1 해서 13이나오고, 여기 2로 나누면 6과 나머지 1일 나오는데 여기서 6이 세로이고 뺀 값 에 나머지 1을 더해 8이 가로가 된다.
노란색이 주어지는 값이... 8-2 =6 과 6-2=4 의 값을 곱한값과 같으면된다. 라고 생각했는데 넘 복잡하여.. 다른 사람들 문제풀이를 보니...
가로세로 = brown + yellow였다...
가로-2
세로-2 = yellow.
제곱근으로 나오거나 아니면 가로가 한두칸 더 많음.

package step1;

public class 카펫 {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int sum = brown + yellow;
double sqrt = Math.sqrt(sum); //제곱근 구하기
int a = (int) sqrt;
int b = sum/a; //ab== sum && a-2 b-2 == yellow여야 함
if((ab!= sum) || (a-2) (b-2) != yellow) {
while (a>=1) {
a = a-1;
if (sum % a ==0) {
b = sum/a;
if ((ab == sum)&&((a-2)(b-2)==yellow)) {
break;
}
}
}
}
if (a>=b) {
answer[0] = a;
answer[1] = b;
}else {
answer[0] = b;
answer[1] = a;
}
return answer;
}
}

점심시간동안 풀려고 했는데 실패.ㅠ
결국 저녁까지 먹고 늦은 시간에 성공했다. 문제 풀이 방법에 접근 하기는 했으나 혼자 힘으론 하지 못하고 결국 구글링을 해봤다.
시간까지 초과되었는데... 내일 다시 복습해봐야겠다.

profile
Doing nothing cause nothing to happen.

0개의 댓글