Preparing Coding Test/Programmers L2
[Java/프로그래머스/브루트 포스] 카펫
weero
2020. 8. 28. 15:46
문제
https://programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 ��
programmers.co.kr
코드
전체 격자의 수 = yellow 개수 + brown 개수
yellow의 가로 길이 = 전체 가로 길이 - 2 (좌우가 brown으로 한줄씩 쌓여있기 때문)
yellow의 세로 길이 = 전체 세로 길이 - 2 (위 아래가 brown으로 한줄씩 쌓여있기 때문)
for문의 i 범위는 3~√all
3 : yellow는 상하좌우 brown으로 한 줄씩 쌓여있다. yellow가 최소 1줄이라 했을 때 + 2로 설정했다.
√all : √all 를 기준으로 이미 짝이 있기 때문이다.
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int all = yellow+brown;
for(int i=3; i<=(int)Math.sqrt(all); i++){ //세로
if(all%i!=0)
continue;
else{
int j=all/i; //가로
if(yellow==(i-2)*(j-2) && brown==all-yellow){
answer[0]=j;
answer[1]=i;
}
}
}
return answer;
}
}