프로그래머스

[프로그래머스] 프로그래머스 Level1 소수 찾기 C++

2022. 5. 19. 14:36
목차
  1. 문제
  2. 풀이
  3. 코드

문제

https://programmers.co.kr/learn/courses/30/lessons/12921?language=cpp 

 

코딩테스트 연습 - 소수 찾기

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상

programmers.co.kr

풀이

알고리즘 문제에서 많이 나오는 소수 찾기 문제이다.

판별해야 하는 범위가 1 ~ n인데 n이 최대 1000000이므로 일반적인 소수 판별로는 시간 초과가 날 것이다. 필자는 에라토스테네스의 체로 접근하여서 문제를 해결할 수 있었다.

0, 1은 소수가 아니므로 처음부터 제외시켰고 바깥 for문의 범위를 n의 제곱근만큼만 지정해주었다.

왜냐하면 안쪽의 for문을 통해서 i가 소수가 아니면 i + i, i + i + i도 소수가 아님을 판별할 수 있기 때문이다. 

코드

#include <string>
#include <vector>
#include <cmath>

using namespace std;

int isPrimeNum[1000001];

int solution(int n) {
    int answer = 0;

    for (int i = 2; i <= n; i++)
    {
        isPrimeNum[i] = i;
    }

    for (int i = 2; i <= sqrt(n); i++)
    {
        for (int j = i + i; j <= n; j += i)
        {
            isPrimeNum[j] = 0;
        }
    }

    for (int i = 2; i <= n; i++)
    {
        if (isPrimeNum[i] != 0)
        {
            answer++;
        }
    }

    return answer;
}
저작자표시 비영리 동일조건 (새창열림)

'프로그래머스' 카테고리의 다른 글

[프로그래머스] 프로그래머스 Level2 N개의 최소공배수 C++  (0) 2022.05.19
[프로그래머스] 프로그래머스 Level1 폰켓몬 C++  (0) 2022.05.19
[프로그래머스] 프로그래머스 Level1 같은 숫자는 싫어 C++  (0) 2022.05.19
[프로그래머스] 프로그래머스 Level2 땅따먹기 Java  (0) 2022.05.18
[프로그래머스] 프로그래머스 Level2 최솟값 만들기 Java  (0) 2022.05.18
  1. 문제
  2. 풀이
  3. 코드
'프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 프로그래머스 Level2 N개의 최소공배수 C++
  • [프로그래머스] 프로그래머스 Level1 폰켓몬 C++
  • [프로그래머스] 프로그래머스 Level1 같은 숫자는 싫어 C++
  • [프로그래머스] 프로그래머스 Level2 땅따먹기 Java
Doshisha
Doshisha
Doshisha
Doshisha
Doshisha
전체
오늘
어제
  • 분류 전체보기
    • Java
    • Spring
    • Project
      • Gameple
      • 피파온라인 검색 사이트
    • Node.js
    • DBMS
      • MySQL
      • MSSQL
    • AWS
    • BOJ
    • 프로그래머스
    • 프로그래머스-SQL
    • 컴퓨터 구조
    • 네트워크
    • Git
    • IDE
    • 후기 및 회고
    • 기타
    • Linux
    • Frontend
      • Vue.js
      • jQuery
      • JavaScript
    • Unity
    • WAS
      • Tomcat
    • Jenkins

블로그 메뉴

  • 방명록
  • Github

공지사항

인기 글

태그

  • 카카오 코딩테스트
  • 카카오
  • 게임 플랫폼 개발
  • mysql 서브쿼리
  • 문자열
  • C++ BFS
  • c++
  • 프로그래머스
  • 구현
  • 자바
  • 백트래킹
  • SpringBoot Jenkins
  • 백준
  • 카카오 코테
  • Gameple
  • SpringBoot Jenkins CI/CD
  • BFS
  • 프로그래머스 SQL
  • 코테
  • MySQL
  • 모두의 네트워크
  • 게임 플랫폼
  • 게임 API 연동
  • 일본
  • 넥슨 오픈 API
  • java
  • DP
  • Spring Data JPA
  • 네트워크
  • boj

최근 댓글

최근 글

hELLO · Designed By 정상우.
Doshisha
[프로그래머스] 프로그래머스 Level1 소수 찾기 C++
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.