[BOJ] 1978 - 소수 찾기
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력 1
4 1 3 5 7
예제 출력 1
3
코드
#include <iostream>
using namespace std;
int main(){
int n; cin>>n;
int s[n], cnt=0, tmp;
for(int i=0; i<n; i++) cin>>s[i];
for(int i=0; i<n; i++){
tmp = 0;
if(s[i] > 0){
for(int j=1; j<=s[i]; j++) if(s[i] % j == 0) tmp++;
if(tmp == 2) cnt++;
}
}
cout<<cnt;
}
| cs |
소수의 정의만 잘 알고 있다면 쉽게 풀 수 있는 문제이다. 유의할 점은 소수에서 1은 제외된다는 것.
난 아무리 제출해도 백준서버 채점에서 틀렸다는 결과만 나와서 대체 뭐가 잘못 되었나 생각했는데 정말 바보같은 실수였다. 최종적으로 출력하는 소수인 경우의 개수(cnt)를 0으로 초기화하지 않고 ++ 연산자로 더해버려서 당연히 틀렸었다. DevCpp에서는 초기화하지 않아도 컴파일러가 0으로 int를 0으로 초기화하는 것 같았다.
변수 선언시 초기화의 중요성에 대해서 다시 한번 실감한 하루였다,,
댓글 없음: