입출력 예 설명
입출력 예 #1
- 분수 7/20은 기약분수 입니다. 분모 20의 소인수가 2, 5 이기 때문에 유한소수입니다. 따라서 1을 return합니다.
입출력 예 #2
- 분수 11/22는 기약분수로 나타내면 1/2 입니다. 분모 2는 소인수가 2 뿐이기 때문에 유한소수 입니다. 따라서 1을 return합니다.
입출력 예 #3
- 분수 12/21는 기약분수로 나타내면 4/7 입니다. 분모 7은 소인수가 7 이므로 무한소수입니다. 따라서 2를 return합니다.
Hint
- 분자와 분모의 최대공약수로 약분하면 기약분수를 만들 수 있습니다.
- 정수도 유한소수로 분류합니다.
※ 공지 - 2022년 11월 10일 테스트 케이스가 추가되었습니다. 기존에 제출한 코드가 통과하지 못할 수도 있습니다.
- 내 풀이
class Solution {
public int solution(int a, int b) {
int answer = 0;
int num = 0;
for (int i = 2; i <= a; i++) {
if (a % i == 0 && b % i == 0){
num = i;
}
}
if(num != 0) {
b /= num;
}
while(true){
if(b % 2 == 0 || b % 5 == 0){
answer = 1;
break;
}else {
answer = 2;
break;
}
}
return answer;
}
}
* 기약 분수란 분자와 분모가 서로 약분할 수 없는 분수를 말합니다
테스트 5개가 자꾸 실패하여 다른 분의 풀이를 참조한다
- 다른 사람 풀이
class Solution {
public int solution(int a, int b) {
int answer = 1;
int max = 0;
for(int i =1; i<=a; i++){
if(a%i ==0 && b%i ==0) max= i;
}
b /= max;
while(b>1){
if(b%2==0){
b /= 2;
}else if(b%5==0){
b /= 5;
}else {
return 2;
}
}
return answer;
}
}
분모의 소인수가 2와 5만 존재해야 한다고 했는데
난 if(b % 2 == 0 || b % 5 == 0){ 문 하나로 끝내려고 해서 문제가 생긴거 같다
지금 정리를 하면서 보니 while문을 사용해 놓고 while문을 돌리려는 목적은 정하지도 않고 사용하였네...
좀 더 생각하면 풀 수 있는 문제였는데 이런 실수를 하다니...너무 허무하다
'프로그래머스 > [프로그래머스 - JAVA] Lv.0' 카테고리의 다른 글
[프로그래머스 - JAVA] 문자열 밀기 (0) | 2023.03.17 |
---|---|
[프로그래머스 - JAVA] 특이한 정렬 (0) | 2023.03.17 |
[프로그래머스 - JAVA] 등수 매기기 (0) | 2023.03.16 |
[프로그래머스 - JAVA] 치킨 쿠폰 (0) | 2023.03.16 |
[프로그래머스 - JAVA] 로그인 성공? (0) | 2023.03.16 |
댓글