ebichu_ww   2년 전

아까는 반복된 소수도 또 소수에 포함해버려서 그것을 고려하여 코드를 수정하였는데 또 틀렸다고 뜹니다 뭐가 문제일까요..?

dbshin59   2년 전

반례:

4

2 2 2 2

답: 4

출력: 1

4

4 4 4 4

답: 0

출력: -96

dbshin59   2년 전

중복되어 들어올 수 있다는 말은, 중복된 경우는 처리하라는 뜻이 아니라, 질문자님의 전 코드에 if(n == 1) result = 1; 이라는 코드가 있어서 그 경우에 1이 여러번 들어와도 처리를 못 한다는 뜻이었습니다.

소수의 경우에는 중복된 경우에도 모두 세야 합니다.

ebichu_ww   2년 전

전 코드에서 result += 1; 로 바꾸니 1이 여러 번 나와도 0이 출력되기는 하지만 또 틀렸다고 뜹니다.. 처음부터 다시 짜는 게 나을까요?.?

dbshin59   2년 전

반례

2

4 2

답 1

출력 2

원인: count값

ebichu_ww   2년 전

result += count;를 22번째 줄로 넣었더니 출력이 1이 나오며 해결이 되었는데 아직도 틀렸다고 뜹니다 ㅜㅜ count값을 저렇게 선언하면 안되는 건가요..?

dbshin59   2년 전

count값을 초기화해주지 않아서 생기는 문제입니다.

만약 첫 입력으로 소수가 아닌 수가 들어왔다고 해 봅시다.

그러면 count값은 1이 됩니다.

그러나 문제는, 루프를 돌면서 이 count값이 고정되어 있다는 것입니다.

2

4 2

의 경우에는 15번 줄에 걸려서 넘어갔지만, 

2

4 3

을 하면 0이 출력됩니다.

이 이유는, 3의 경우 소수가 아님에도, count값이 1로 남아있기 때문에 result에 무조건 1이 들어가기 때문입니다.

count값을 매번 초기화 해 주셔야 합니다.

ebichu_ww   2년 전

자세히 설명해주셔서 감사합니다 해결했습니다!!!

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