반응형
처음 코드....
class Solution {
// 최대공약수 계산
public static int gcd(int numer1, int numer2) {
if(numer2 == 0) return numer1;
else return gcd(numer2, numer1 % numer2);
}
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int[] answer = new int[2];
// 분모 : 최소공배수
int gcd = gcd(denom1, denom2);
answer[1] = denom1 * denom2 / gcd;
// 분자
answer[0] = numer1 * (answer[1]/denom1) + numer2 * (answer[1]/denom2);
return answer;
}
}
이렇게 뜨긴 한다만 채점하면 쭉 틀려서 힌트를 보고 다시 풀어보기로 했다..
그리하여 수정한
최종 정답 코드
class Solution {
// 최대공약수 계산
public static int getGCD(int a, int b) {
if(b == 0) return a;
else return gcd(b, a % b);
}
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int[] answer = new int[2];
int boonja = numer1 * denom2 + numer2 * denom1;
int boonmo = denom1 * denom2;
int gcd = getGCD(boonja, boonmo); // !!! 최대공약수 !!!
answer[0] = boonja / gcd; // 분자
answer[1] = boonmo / gcd; // 분모
return answer;
}
}
힌트에서 일단 최소공배수 생각하지 않고 두 분수의 합을 계산해놓고
분자와 분모를 분자와 분모의 최대공약수로 나누어서 리턴해주면 된다고 해서 그렇게 했더니 성공...ㅠ
그리고 GCD구하는 함수 다들 이렇게 많이 쓰심..
public int getGCD(int num1, int num2) {
if (num1 % num2 == 0)
return num2;
return getGCD(num2, num1 % num2);
}
근데 0단계 맞나며...
(참고)
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 0] n의 배수 고르기 (0) | 2023.01.29 |
---|---|
[프로그래머스/Lv. 0] A로 B 만들기 (0) | 2023.01.28 |
[프로그래머스/Lv. 0] 제곱수 판별하기 (0) | 2023.01.27 |
[프로그래머스/Lv. 0] 숨어있는 숫자의 덧셈 (1) (0) | 2023.01.27 |
[프로그래머스/Lv. 0] 모음 제거 (0) | 2023.01.24 |