im0121   4년 전

가장 이해가 안되는건 출력 부분입니다

9020번 예제를 보면 8 ==> (3,5)

                              10 ==> (5,5)

                              16 ==> (5,11) 가 출력이 됩니다.

근데 분명히 아무리봐도 맞는 코드를 짰는데 제가 넣으면 

8 ==>  (7,1)

10 ==> (5,5)

16 ==> (3,13) 이 나옵니다..

33번줄에서 조건이 어디가 잘못된걸까요..?

아무리봐도 모르겠어서 질의합니다.

               

wider93   4년 전

16을 넣었을 때 3, 13이 나왔다고 하셨는데 실제로는 13, 3이 나오네요. 결과 그대로 써주세요.


이유는 39번째 줄입니다. 종료 조건이 다른 if문 안에 들어있어서 k가 num - k이상이 되어도 멈추지 않습니다.

im0121   4년 전

39번째 줄을 아예 없애봤는데 결과가 동일합니다 ㅠ 

어떻게 고쳐야하나요..? 

가장 이해가 안되는건 31번줄에서 k는 2부터 시작하는데 어떻게 two 의 값에 1이 들어갈 수 있느냐 입니다

wider93   4년 전

39번째 줄의 역할을 생각해 보세요. k가 num - k가 되면 멈추게 (즉 one = two)가 되면 멈추게 하려는 것입니다.

문제는 min을 k, n-k가 소수일 때에만 갱신하므로 (4, 4)나 (8, 8)에서는 멈추지 않는다는 말이죠.

종료조건을 바꿔보세요. 애초에 k <= num - k인 k에 대해서만 계산할 거라면, for문을 k <= num/2에서 돌리면 충분하겠죠?

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