728x90
[C++] vector container 정리 및 사용법
안녕하세요. BlockDMask 입니다.오늘은 C++ STL의 sequence container 중에 정말 자주 쓰는 vector에 대해서 알아보겠습니다. 1) vector container 란?2) vector의 사용 3) vector의 생성자와 연산자4-1) vector의 멤버 함수
blockdmask.tistory.com
🟡틀린 코드 >> 원인 못찾음
//백준 2581 - 소수
#include <cstdio>
#include <vector>
#include <algorithm>
#include <numeric> //accumulate 함수 사용
using namespace std;
int main(){
int m, n;
scanf("%d", &m);
scanf("%d", &n);
// m이상 n이하의 자연수 중 소수 찾기
vector<int> prime;
for(int i = m; i <= n; i++){
for(int j = 2; j <= i/2; j++){
if(i % j == 0) break;
if(j == i/2)
prime.push_back(i);
}
}
if(prime.size() == 0) printf("-1");
else{
// 소수의 합 출력
int sum = accumulate(prime.begin(), prime.end(), 0);
printf("%d\n", sum);
// 소수 중 최솟값 출력
sort(prime.begin(), prime.end());
printf("%d", prime[0]);
return 0;
}
}
위 코드가 왜 틀렸다고 채점되는지 모르겠다..
🔵맞은 코드
#include <cstdio>
#include <vector>
#include <algorithm>
#include <numeric> //accumulate 함수 사용
#include <cmath> // sqrt 함수 사용
using namespace std;
bool isPrime(int num) {
if (num < 2) return false;
for (int j = 2; j <= sqrt(num); j++) {
if (num % j == 0) return false;
}
return true;
}
int main() {
int m, n;
scanf("%d", &m);
scanf("%d", &n);
// m 이상 n 이하의 자연수 중 소수 찾기
vector<int> prime;
for (int i = m; i <= n; i++) {
if (isPrime(i)) {
prime.push_back(i);
}
}
if (prime.empty()) {
printf("-1\n");
} else {
// 소수의 합 출력
int sum = accumulate(prime.begin(), prime.end(), 0);
printf("%d\n", sum);
// 소수 중 최솟값 출력
printf("%d\n", prime[0]);
}
return 0;
}
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 1546] Java 평균 / Java로 코딩테스트하기 (0) | 2025.01.09 |
---|---|
[백준 9613] C++ - GCD 최대공약수 구하기 (4) | 2024.07.22 |
🟡미완 [백준 23304] C++ (0) | 2024.07.22 |
🟡미완 [백준 1874] C++ (0) | 2024.07.22 |
[백준 1966] C++ - 우선순위 큐, pair (0) | 2024.07.22 |