본문 바로가기

코딩테스트/C++

[백준 C++] 1978번: 소수 찾기

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

 

단순히 for문으로 계산하려 했지만 시간이 마음에 걸렸다. O(n^2)이고 n이 1000까지이기 때문에 그냥 for문으로 풀어주었다.

 

#include <iostream>
using namespace std;
int main() {
	int N, ans = 0;
	cin >> N;
 
	for (int T = 1;T <= N;T++){
		bool b = true;
		int a;
		cin >> a;
		for (int i = 2;i < a;i++) {
			if (a % i == 0) {
				b = false;
				break;
			}
		}
		if (a != 1 && b == true)
			ans++;
	}
 
	cout << ans;
 
	return 0;
}

 

보니까 예전에 코테 처음 준비했을때도 풀었던 코드가 있어서 가져왔다.

 

#include <iostream>
using namespace std;
 
int main(int argc, char const* argv[]) {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
 
    int N;
    cin >> N;
    int a;
    int so = 0;
    for (int i = 0;i < N;i++) {
        int b = 0;
        cin >> a;
        if (a == 1)
            so = so;
        else {
            for (int j = 1;j <= a;j++) {
                if (a % j == 0)
                    b++;
            }
            if (b == 2)
                so++;
        }
    }
    cout << so;
    return 0;
}

 

지금 짠 코드가 더 이해하기 편하고 코드도 짧아진거 같아서 조금 뿌듯했다.