CS/알고리즘 문제 풀이

[백준] 4948 - 베르트랑 공준 [Python(파이썬)]

2021. 1. 2. 23:30
목차
  1. 문제
  2.  
  3. 풀이
  4. 코드

문제

www.acmicpc.net/problem/4948

 

4948번: 베르트랑 공준

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼

www.acmicpc.net

 

풀이

에라토스테네스의 체를 이용하여 풀었다. 입력의 한계를 고려하여 사용했던 숫자를 기록해둔 후에 중복 계산을 피하는 방식으로 최적화를 했다. 하지만, 먼저 모든 해를 구한 것과 시간 차이는 그리 크지 않았다(30ms). 

https://wikidocs.net/21638

코드

1번 풀이

N = 123456
max_num = 0
isPrime = [False, False] + [True]*(2*N - 1)

def count_num(n):
    global max_num
    if max_num < n:
        for i in range(max_num*2 + 1, 2*n + 1): # max_num*2까지는 계산이 되었으므로
            if isPrime[i]:
                for j in range(2*i, 2*N + 1, i):
                    isPrime[j] = False
        max_num = n
        return isPrime[n+1:2*n + 1].count(True)
    else:
        return isPrime[n+1:2*n + 1].count(True)


while True:
    n = int(input())
    if n:
        print(count_num(n))
    else:
        break

2번 풀이

N = 123456
max_num = 0
isPrime = [False, False] + [True]*(2*N - 1)

for i in range(2, 2*N + 1): # max_num*2까지는 계산이 되었으므로
    if isPrime[i]:
        for j in range(2*i, 2*N + 1, i):
            isPrime[j] = False

while True:
    n = int(input())
    if n:
        print(isPrime[n+1:2*n + 1].count(True))
    else:
        break

 

저작자표시 (새창열림)

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

[백준] 14502 - 연구소 [Python(파이썬)]  (0) 2021.01.06
[백준] 11052 - 카드 구매하기 [Python(파이썬)]  (0) 2021.01.06
[백준] 10844 - 쉬운 계단 수 [Python(파이썬)]  (3) 2021.01.06
[백준] 1149 - RGB거리 [Python(파이썬)]  (0) 2021.01.06
[백준] 14725 - 개미굴 [Python(파이썬)]  (0) 2021.01.01
  1. 문제
  2.  
  3. 풀이
  4. 코드
'CS/알고리즘 문제 풀이' 카테고리의 다른 글
  • [백준] 11052 - 카드 구매하기 [Python(파이썬)]
  • [백준] 10844 - 쉬운 계단 수 [Python(파이썬)]
  • [백준] 1149 - RGB거리 [Python(파이썬)]
  • [백준] 14725 - 개미굴 [Python(파이썬)]
코택
코택
TaxFree코택 님의 블로그입니다.
코택
TaxFree
코택
전체
오늘
어제
  • 분류 전체보기 (369)
    • Spring (29)
      • Spring (18)
      • 스프링 핵심 원리 - 고급편 (11)
    • Spring Batch (4)
    • JPA (4)
    • CS (89)
      • 자료구조 (2)
      • 네트워크 (5)
      • 운영체제 (1)
      • 데이터베이스 (4)
      • SQL (7)
      • 알고리즘 이론 (4)
      • 알고리즘 문제 풀이 (66)
    • 웹 (28)
      • React.js (4)
      • Next.js (1)
      • Node.js (14)
      • FastAPI (4)
      • Django (5)
    • 프로그래밍 언어 (45)
      • Python (5)
      • Java + Kotlin (29)
      • JavaScript + TypeScript (11)
    • 테스트코드 (26)
      • ATDD, 클린 코드 with Spring (4)
      • 이규원의 현실 세상의 TDD: 안정감을 주는 코드.. (20)
    • 인프라 (6)
      • AWS (2)
      • Kubernetes (4)
    • 트러블슈팅 (25)
    • 책 (89)
      • Effective Java (54)
      • Effective Kotlin (14)
      • 도메인 주도 개발 시작하기: DDD 핵심 개념 정.. (11)
      • 웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 (6)
      • 도메인 주도 설계 첫걸음 (4)
    • Git (10)
    • 회고 (5)
    • etc (8)

블로그 메뉴

  • 홈
  • 방명록
  • 관리
  • GitHub
  • LinkedIn

공지사항

  • 스킨 관련

인기 글

태그

  • BOJ
  • Shortest Path
  • 파이썬
  • 깊이 우선 탐색
  • Git
  • mysql
  • 백준
  • dp
  • fastapi
  • atdd
  • 그래프
  • 브루트포스
  • http
  • 그래프 탐색
  • 장고

최근 댓글

최근 글

hELLO · Designed By 정상우.
코택
[백준] 4948 - 베르트랑 공준 [Python(파이썬)]
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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