문제
https://school.programmers.co.kr/learn/courses/30/lessons/42842#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
설명
입출력
나의 풀이
풀이 과정
첫 번째 예제로 설명하면 brown=10, yellow=2일 때,
yellow를 기준으로 yellow의 약수를 구하면 (1,2)이다. 가로의 길이가 세로의 길이보다 더 길어야 하므로
yellow 타일의 가로의 길이가 2이고, 세로의 길이가 1이다.
이때 brown의 격자수는 (2+2)*2 + 1*2 = 10이므로 문제로 주어진 brown의 격자수와 같다.
카펫의 가로, 세로의 크기는 각각 yellow의 가로, 세로의 격자 수보다 2씩 크므로 카펫의 크기는 [4,3]이다.
brown의 격자수 = (2+2)*2 + 1*2 = 10 은 아래의 그림처럼 계산한 것이다.
위의 설명을 바탕으로 작성한 코드는 아래와 같다.
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int max = 0, min = 0, cal = 0;
int sqrt = (int) Math.sqrt(yellow);
for(int i=1; i <= sqrt; i++) {
if(yellow % i == 0) {
max = Math.max(i,yellow/i);
min = Math.min(i,yellow/i);
}
cal = (max+2)*2 + min*2;
if(cal == brown) {
answer[0] = max + 2;
answer[1] = min + 2;
break;
}
}
return answer;
}
}
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (JAVA) Lv1 폰켓몬 (0) | 2023.07.02 |
---|---|
[프로그래머스] (JAVA) Lv2 더 맵게 (0) | 2023.07.02 |
[프로그래머스] (JAVA) Lv1 최소직사각형 (0) | 2023.07.01 |
[프로그래머스] (JAVA) Lv2 전화번호 목록 (0) | 2023.07.01 |
[프로그래머스] (JAVA) Lv0 배열 조각하기 (0) | 2023.06.01 |