그렇다면 이 문제는 어때?
소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다.
분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다.유한소수가 되기 위한 분수의 조건은 다음과 같습니다.
기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다.
두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요.
<제한사항>
a, b는 정수
0 < a ≤ 1,000
0 < b ≤ 1,000
<입출력 예>
a b result
7 20 1
11 22 1
12 21 2
class Solution {
public int solution(int a, int b) {
int answer = 2;
int max = 1;
for( int i=2; i<=a; i++ ) {
if( a%i==0 && b%i==0 )
max = i;
}
b /= max;
for( int i=0; i<b; i++ ) {
if( b%2==0 )
b/=2;
if( b%5==0 )
b/=5;
}
if( b==1 )
answer = 1;
return answer;
}
}
마지막 for문에서 문제가 생겼지만
50개의 테스트에서 무려 47개를 통과했지
수많은 사람들이 가져온 반례들을 모두 통과한 코드야
과연 저 for문은 무엇이 잘못되었을까?
비효율적이긴 하지만 잘못된 것 같지는 않은데
너무어렵다 - dc App
좀 따 기대하자
Except Eexcpt
이거 최대공약수 구해서 약분해준뒤에 분모값에따라 판별해줬던거같은데 정확히 기억은 안나네 근데 반례가 1개틀리든 전부틀리든 틀린코드라는건 차이없음. 무려 47개를 통과했다느니 이런얘기는 좀
하지만 전부 틀린 코드는 반례를 찾기 쉽겠지만 저렇게 반례가 거의 안 나오는 코드는 어떤게 잘못되었는지 찾기 어렵지 마치 지금의 너가 찾지 못하는 것처럼
반례찾음. 근데 안알려줌 ㅅㄱ 한줄짜리 간단한 풀이있는데 그거찾아보면 뭐가틀렸는지 깨달음을 얻을거임.
힌트를 주자면 네 반복문이 빨리탈출하는 경우가있음
모르면 모른다고 해라 너무 추하다
추한건 네 코드고; 누가 저렇게 반복문을 돌림
그 추한 코드 못 읽으면서 아는 척은 하고 싶어서 난 찾았는데 안 알려줌 이러면서 구라치는게 너잖아 ㅋㅋㅋ
ㅋㅋ 어떻게든 답알고싶어서 몸비트네 네 반복문이 왜 빨리탈출하는 경우가생길까? 이거 잘 생각해보면 답나옴 반복문 정의 잘 생각해보고 역추적해봐
네 코드가 말하는건 i가 반복문에서 쓰이지않는 무의미한 수지만, 충분히 크니까 모든 경우를 다 담을수있어요~ 인데 아닌경우가 존재함
뭘 몸을 비틀어 답을 알고 싶은건 맞지만 일단 넌 모르는게 확실해보이는데 그럴듯하게 말하는건 누가 못함 아닌 경우가 존재하니까 반례가 존재하겠지 그냥 뻔한 소리만 주구장창 하고 있네
아 눈높이교육해줌; 네 반복문 조건을 잘보셈 반복문 빨리 탈출하는 경우가 뭐겠음 니가 진짜 이거보고 기싸움이 아니라 네 코드의 문제점을 다시 생각해봤다면, 이 얘기 듣고 한번 살펴보면 ~~아님? ~~말하는거같은데 ~~되는거아님? 이런식으로 꼬리질문이 나왔어야함 이얘기듣고도 반복문이 빨리 탈출하는 경우를 모르겠으면 다시물어봐
설마 너 문제 조건도 제대로 안 읽고 이러고 있는거니?
0레벨문제도 못풀고 반복문조차 겁나 이상하게짜놨으면 나같음 쪽팔려서 조용히 구글링이나 gpt로 답찾아보면서 뭐가다른지 봤을듯 ㅋㅋㅋ 넌 그냥 안되는거같아서 알려줌 네 반복문 조건은 i < b지? 그럼 반복문 그만 돌리는 경우는 뭐겠음 i >= b 인 경우이고, 그래서 정답과 달리 연산을 덜하는 경우가 존재함 이걸 '당연한 얘기하고있네' 라고 시비터는 댓글달기 전에, 그런 경우는 어떤 경우가 존재하는지 잘 생각해봐 힌트를 더 주자면, i는 반복문이 돌수록 증가하고있는데 (i++), i >= b가 되려면 b가 어떻게되어야하고, 그러면 i와 b가 교차하는 순간은 어떻게해야발생할까? 나 운동가니까 여기서 더 친절하게는 말 못해주겠다
지금 뭐 입문단계니까 니가 못푸는거까지는 상관없음. 근데 그 태도 못버리면 진짜 개발자하기힘들거다
그냥 뻔한 소리만 길게 늘어놓으면 뭐하냐 "정답은 4번이 아니에요 왜냐하면 4번이 아닌 이유를 잘 찾아보면 알 거예요" 이딴 소리만 계속 반복하고 있네 ㅋㅋㅋ 반례 하나 못 찾고 아는 척은 그렇게 하고 싶냐 난 이런 사람이 제일 이해가 안 되더라
모르는건 창피한게 아니야 다만 모르면서 아는척 하고 싶어서 뻔한 소리만 의미없이 늘어놓는게 진짜 창피한거다
혹시 5 15 됨?
ㅇㅇ
뭐나옴? 2나와야할거같은데 1나오지않냐
2 제대로 나와
아 찾았음 3 16 서로소인데 처음포문에서 최대공약수가 있다고 잘못판단하고 있네
3 16 아닌 것 같은데 해보니까 결과 2라고 나와 최대공약수는 1
마지막 포문 돌려보면 8 4 2 1로 가야하는데 i가 증가해가버려서 포문탈출됨
아 맞다 오 너 진짜 근성도 좋고 똑똑하다 고맙다 덕분에 꿀잠자겠네
이 시간까지 풀고 있을 줄은 상상도 못했었음 ㅋㅋㅋ 사소한 일에도 이정도 근성을 보여줄 정도면 뭘 하든 잘 될 듯 ㄳㄳ
while 쓰자 게이야 버그찾기 힘드노