programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
문제 설명 : 카펫의 가로 길이와 세로길이 구하기
문제 풀이 :
노란 격자의 약수를 확인하면서 구했습니다.
예를 들어 brown 가 24고 yellow가 24일 때, x를 증가시키면서 노란격자의 수와 나누어떨어지면 brown 개수인지 확인하였습니다.
x y temp
1 24 54
2 12 32
3 8 26
4 6 24 -> brown 의 개수와 같기 때문에 각각 변의 길이는 x+2, y+2 입니다. 이 중 더 크거나 같은 숫자가 카펫의 가로길이가 되고 나머지는 세로길이입니다.
class Solution {
public static int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int x = 0, y = 0;//카펫 각각의 길이
while(x != yellow) { // x가 노란 격자의 수 보다 작을 때까지만
x++;
y = yellow/x;
if(yellow %x == 0) {//x가 약수라면
int temp = (y+2) *2 + (x*2);//x와 y를 감싸는 갯수를 구한다
if(temp==brown) {// 감싸는 갯수가 brown의 개수가 같을 때
if(x+2 == y+2) {
answer[0] = x+2;
answer[1] = y+2;
break;
}
else{
answer[0] = Math.max(x+2, y+2);
answer[1] = Math.min(x+2, y+2);
break;
}
}
}
}
return answer;
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[프로그래머스] 올바른 괄호 (0) | 2021.03.19 |
---|---|
[프로그래머스] 단속카메라 (0) | 2021.03.16 |
[프로그래머스] 쿼드압축 후 개수 세기 (0) | 2021.03.16 |
[백준] 14502번 연구소 (0) | 2021.03.03 |
[프로그래머스] 위장 (0) | 2021.02.04 |