-
프로그래머스 분수의 덧셈프로그래밍/코딩테스트연습 2023. 11. 15. 10:15
처음에는 그저 numer1/ denom1 , numer2/denom2 를 싹 다 약분해서 돌리고
그 값을 서로 더해주면 끝이라고 생각했다.
class Solution { public int[] solution(int numer1, int denom1, int numer2, int denom2) { int[] answer = new int[2]; for(int i = 2; i<denom1; i++){ while (numer1%i == 0 && denom1%i == 0){ numer1 /= i; denom1 /= i; } } for(int i = 2; i<denom2; i++){ while (numer2%i == 0 && denom2%i == 0){ numer2 /= i; denom2 /= i; } } int top = (numer1*denom2) + (numer2*denom1); int bot = (denom1 * denom2); answer[0] = top; answer[1] = bot; return answer; } }
그래서 대충 이렇게 짰는데 연산 후에 분자 분모가 약분가능한 상황에서도 약분하지 않는것이 문제였다.
그럼 먼저 분수연산을 한 후에 나누면 되겠지라고 생각하여 코드 순서를 바꿔보았다.
class Solution { public int[] solution(int numer1, int denom1, int numer2, int denom2) { int[] answer = new int[2]; int top = (numer1*denom2) + (numer2*denom1); int bot = (denom1 * denom2); for(int i = 2; i<bot; i++){ while (top%i == 0 && bot%i == 0){ top /= i; bot /= i; } } answer[0] = top; answer[1] = bot; return answer; } }
잘 동작하는것을 확인할 수 있었다.
'프로그래밍 > 코딩테스트연습' 카테고리의 다른 글
약수의 합 (1) 2023.11.09 9/26 TIL [프로그래머스 코딩테스트] 단 한문제 (0) 2023.09.26 9/22 TIL [프로그래머스 코딩테스트] 2문제 (0) 2023.09.22 9/21 TIL [프로그래머스 코딩테스트] 4문제 (0) 2023.09.21 9/20 TIL [프로그래머스 코딩테스트] 4문제 (1) 2023.09.20