반응형
처음 코드....
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;
}
}
이렇게 뜨긴 한다만 채점하면 쭉 틀려서 힌트를 보고 다시 풀어보기로 했다..
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
그리하여 수정한
최종 정답 코드
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단계 맞나며...
(참고)
[프로그래머스] 분수의덧셈 - 자바스크립트
0단계인데.. 너무 어려워
velog.io
[프로그래머스] 분수의 덧셈 문제 풀이(코딩테스트 입문 Lv. 0) - 파이썬 python
0. 자세한 설명은 YouTube 영상으로 1. 단순 gcd를 활용한 Solution # ver1 def solution(denum1, num1, denum2, num2): # 1. 두 분수의 합 계산 boonmo = num1 * num2 boonja = denum1 * num2 + denum2 * num1 # 2. 최대공약수 계산 start = m
coding-grandpa.tistory.com
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/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 |