jshyun912   1년 전

일단 코드 27번째 줄에 있는 입력이 -면 뒤집는건 음수들어가도 양수로 출력 해야 하나 해서 한건데 있으나 마나 틀리는건 마찬가지군요.

당연히 예제는 잘 되는데 어디서 실수를 했을까요?

wak8835   1년 전

유클리드 호제법을 사용한 최대공배수를 계산하는 식이 잘못되어 있는 것 같네요. 


GCD(a, b) = GCD(b, r), 여기서 r = a % b 

최종적으로 r 이 0이 될 때까지 반복해주시면 됩니다.

문제는 위의 식을 풀어내는 과정에서 r(= a % b)이 0이 될 때에 b를 반환하시는 식을 작성하신다면

a = 0 이었을 때에 r 은 항상 0이 되므로 조건문에 의해 b의 값이 바로 반환하게 됩니다.

다른 분들이 작성한 gcd 함수를 보시고, 재작성해보시면 통과하실 겁니다.

jshyun912   1년 전

@wak8835

https://daily-life-in-20s.tist...

이 블로그 보고 한번 고쳐봤는데요 계속 틀렸다고 나오네요 재귀함수랑 

여태까지 다른 GCD문제들은 기존 함수로 다 풀었는데 모르겠네요 흠...

아래 소스가 블로그 보고 따라한 GCD입니다.

wak8835   1년 전

if (scanf("%lld", &M[i]) != 1)
    break;

에 대한 조건 오류가 있는 것으로 보입니다.


scanf의 경우에 파일의 끝을 읽으면 EOF를 반환하는 것으로 처리를 시도하신 의도로 보이는데,

백준과 같은 채점사이트에서는 줄바꿈과 같이 입력을 한꺼번에 넣기 때문에 예시 입력에 대한 결과는 다음과 같이 나오게 됩니다.


해당 문제를 해결하는 방안은 https://www.acmicpc.net/board/... 를 참고해주시기 바랍니다.

- 입력
3
10 20 30 40
7 5 12
125 15 25

- 출력
25
-1
-1

- 정답
20
1
25

jshyun912   1년 전

@wak8835 감사합니다. 해결했습니다.

댓글을 작성하려면 로그인해야 합니다.