dev_beomgeun
꾸준하게 차근차근
dev_beomgeun
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • 전공 (0)
      • 운영체제 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 데이터베이스 (0)
      • 네트워크 (0)
    • 개발 공부 (32)
      • 웹 (6)
      • 리눅스 (4)
      • 머신러닝 (1)
      • 스프링 (17)
      • Git (2)
      • AWS (2)
    • 개발 도서, 강의 (3)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식(김영한.. (2)
      • 스프링 부트와 AWS로 혼자 구현하는 웹서비스 (1)
    • 문제 풀이 (118)
      • 백준 알고리즘 (72)
      • 프로그래머스 알고리즘, SQL (38)
      • Hackerrank SQL (8)
    • 프로젝트 기록 (4)
      • 캡스톤 종합설계 (4)
      • 반려하루 프로젝트 (0)
    • 활동 기록 (12)
      • 네이버 부스트캠프 (7)
      • 취준 & 코테 (4)
      • 소프트웨어 마에스트로 13기 (1)
    • 이것저것 (1)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인
  • 방명록

공지사항

인기 글

태그

  • dp
  • AI Tech
  • 회고
  • 그래프탐색
  • 기록
  • 반성
  • 백준
  • 스프링
  • BFS
  • 부스트캠프
  • Hackerrank
  • 서블릿
  • 프로그래머스
  • HackerRank mysql
  • 일기
  • c++
  • 백준 DP
  • 네이버 부스트캠프
  • Baekjoon
  • 프로그래머스 SQL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dev_beomgeun

꾸준하게 차근차근

문제 풀이/백준 알고리즘

[baekjoon 1978] 소수 찾기- 소수, 에라토스테네스의 체 (C++)

2020. 12. 30. 03:32
728x90

www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

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

www.acmicpc.net

 

소수 판정 알고리즘인 에라토스테네스의 체를 이용해서 풀었다.

 

 - 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다.

(baekjoon 2960 에라토스테네스의 체 문제에서 참고)

  1. 2부터 N까지 모든 정수를 적는다.
  2. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다.
  3. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다.
  4. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다.

따라서 소수 P를 찾은 뒤, 그것의 배수들을 모두 지워주면서 소수만 남아 있는 소수 배열을 만드는 것이다.

#include <iostream>

using namespace std;

bool check[1001];
int N, num, cnt;
int main() {
	cin >> N;
	check[1] = true;
	for (int i = 2; i < 1001; i++) {
		for (int j = i * 2; j < 1001; j += i) {
			if (!check[j])
				check[j] = true;
		}
	} // 소수 배열 완성
    
		for (int i = 0; i < N; i++) {
			cin >> num;
			if (!check[num])
				cnt++;
	}
	cout << cnt;
}

소수만 남겨두는 배열을 만드는 방향으로 풀었기 때문에, 소수의 배수를 지워주는 for문에서 첫 시작을 소수부터가 아닌 소수의 배수 중 다음 수부터 시작해야 한다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'문제 풀이 > 백준 알고리즘' 카테고리의 다른 글

[baekjoon 10816] 숫자 카드2 - Hashmap, 이분탐색 (C++)  (0) 2021.01.01
[baekjoon 11650] 좌표 정렬하기- 정렬 (C++)  (0) 2021.01.01
[baekjoon 17269] 이름궁합 테스트- 문자열, 구현 (C++)  (0) 2020.12.27
[baekjoon 14425] 문자열 집합- 문자열, map (C++)  (0) 2020.12.24
[baekjoon 14502] 연구소 - 그래프탐색(BFS,DFS), 브루트포스  (0) 2020.12.05
    '문제 풀이/백준 알고리즘' 카테고리의 다른 글
    • [baekjoon 10816] 숫자 카드2 - Hashmap, 이분탐색 (C++)
    • [baekjoon 11650] 좌표 정렬하기- 정렬 (C++)
    • [baekjoon 17269] 이름궁합 테스트- 문자열, 구현 (C++)
    • [baekjoon 14425] 문자열 집합- 문자열, map (C++)
    dev_beomgeun
    dev_beomgeun
    백엔드 개발을 하며 얻은 지식과 경험을 공유합니다. 현재 카카오페이에서 백엔드 엔지니어로 일하고 있습니다.

    티스토리툴바