https://programmers.co.kr/learn/courses/30/lessons/42842
문제
접근법
들어온 두 값의 합이 카펫의 수이고,
카펫수를 인수분해하여 경우의 수를 검사하여 가로세로 크기를 맞춰야 한다.
풀이
public static int[] solution(int brown, int yellow) {
int[] answer = {0,0};
int sum = brown+yellow;
for(int x=2; x<sum; x++) {
if(sum%x==0) {
int y= sum/x;
if((2*x+2*y-4)==brown){
answer[0]=y;
answer[1]=x;
return answer;
}
}
else continue;
}
return answer;
}
비교적 빨리 풀렸다.
근데 다른사람들의 코드가 훨씬 간결하다..
다른사람의 풀이
import java.util.*;
class Solution {
public int[] solution(int brown, int red) {
int a = (brown+4)/2;
int b = red+2*a-4;
int[] answer = {(int)(a+Math.sqrt(a*a-4*b))/2,(int)(a-Math.sqrt(a*a-4*b))/2};
return answer;
}
}
'Algorithm > 프로그래머스 고득점 Kit' 카테고리의 다른 글
[그리디] 조이스틱- Java코드 ★★★ (0) | 2021.07.27 |
---|---|
[그리디] 체육복 - Java코드 (0) | 2021.07.27 |
[완전탐색] 소수찾기 - Java 풀이, 순열 포인트,★★ (0) | 2021.07.27 |
[완전탐색] 모의고사 - Java 풀이 (0) | 2021.07.27 |
[정렬] H-Index - Java 풀이 (0) | 2021.07.24 |