📚 카펫
[JAVA] 프로그래머스 Level 2.
코딩테스트 연습 - 카펫 | 프로그래머스 스쿨 (programmers.co.kr)
문제
(생략)
제한사항
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
입출력 예
brown | yellow | return |
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
문제 해결 방안
1. yellow의 약수를 구한다
2. yello의 약수로 brown 값과 일치하는 것을 찾는다.
소스 코드
import java.util.*;
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
Queue<Node> q = new LinkedList<>();
for(int i=1; i*i<=yellow; i++) {
if(yellow%i==0) {
q.add(new Node(yellow/i, i));
}
}
brown-=4;
while(!q.isEmpty()) {
Node n = q.poll();
if(brown == (n.x + n.y)*2) {
answer[0] = n.x+2;
answer[1] = n.y+2;
break;
}
}
return answer;
}
public class Node {
int x, y;
Node(int x, int y) {
this.x = x;
this.y = y;
}
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스/Java] 구명 보트 (0) | 2023.08.08 |
---|---|
[프로그래머스/Java] 영어 끝말잇기 (0) | 2023.08.07 |
[프로그래머스/Java] 짝지어 제거하기 (0) | 2023.08.02 |
[프로그래머스/Java] 피보나치 수 (0) | 2023.08.01 |
[프로그래머스/Java] 숫자의 표현 (0) | 2023.07.29 |