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;
}
지금 짠 코드가 더 이해하기 편하고 코드도 짧아진거 같아서 조금 뿌듯했다.
'코딩테스트 > C++' 카테고리의 다른 글
| [백준 C++] 6588번: 골드바흐의 추측 (1) | 2024.04.15 |
|---|---|
| [백준 C++] 1929번: 소수 구하기 (0) | 2024.04.13 |
| [백준 C++] 1934번: 최소공배수 (0) | 2024.04.13 |
| [백준 C++] 2609번: 최대공약수와 최소공배수 (0) | 2024.04.12 |
| [백준 C++] 10430번: 나머지 (0) | 2024.04.12 |