1978번 - 소수 찾기
아까는 반복된 소수도 또 소수에 포함해버려서 그것을 고려하여 코드를 수정하였는데 또 틀렸다고 뜹니다 뭐가 문제일까요..?
반례:
4
2 2 2 2
답: 4
출력: 1
4 4 4 4
답: 0
출력: -96
중복되어 들어올 수 있다는 말은, 중복된 경우는 처리하라는 뜻이 아니라, 질문자님의 전 코드에 if(n == 1) result = 1; 이라는 코드가 있어서 그 경우에 1이 여러번 들어와도 처리를 못 한다는 뜻이었습니다.
소수의 경우에는 중복된 경우에도 모두 세야 합니다.
전 코드에서 result += 1; 로 바꾸니 1이 여러 번 나와도 0이 출력되기는 하지만 또 틀렸다고 뜹니다.. 처음부터 다시 짜는 게 나을까요?.?
반례
2
4 2
답 1
출력 2
원인: count값
result += count;를 22번째 줄로 넣었더니 출력이 1이 나오며 해결이 되었는데 아직도 틀렸다고 뜹니다 ㅜㅜ count값을 저렇게 선언하면 안되는 건가요..?
count값을 초기화해주지 않아서 생기는 문제입니다.
만약 첫 입력으로 소수가 아닌 수가 들어왔다고 해 봅시다.
그러면 count값은 1이 됩니다.
그러나 문제는, 루프를 돌면서 이 count값이 고정되어 있다는 것입니다.
의 경우에는 15번 줄에 걸려서 넘어갔지만,
4 3
을 하면 0이 출력됩니다.
이 이유는, 3의 경우 소수가 아님에도, count값이 1로 남아있기 때문에 result에 무조건 1이 들어가기 때문입니다.
count값을 매번 초기화 해 주셔야 합니다.
자세히 설명해주셔서 감사합니다 해결했습니다!!!
댓글을 작성하려면 로그인해야 합니다.
ebichu_ww 2년 전
아까는 반복된 소수도 또 소수에 포함해버려서 그것을 고려하여 코드를 수정하였는데 또 틀렸다고 뜹니다 뭐가 문제일까요..?