문제
https://programmers.co.kr/learn/courses/30/lessons/42842
코드
전체 격자의 수 = 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;
}
}
'Preparing Coding Test > Programmers L2' 카테고리의 다른 글
[Java/프로그래머스/힙(Heap)] 더 맵게 (0) | 2020.10.16 |
---|---|
[Java/프로그래머스/브루트 포스] 소수 찾기 (Level 2) (0) | 2020.08.29 |
[Java/프로그래머스] H-Index (0) | 2020.08.23 |
[Java/프로그래머스] 문자열 압축 (0) | 2020.08.15 |
[Java/프로그래머스] 카카오프렌즈 컬러링북 (0) | 2020.08.15 |