백준 1016 파이썬 에라토스테네스의 체 방식으로 제곱수의 배수 형태로 탐색
2024. 5. 30. 06:16ㆍ코딩 도구/백준
반응형
백준 1016 - 제곱 ㄴㄴ
문제
https://www.acmicpc.net/problem/1016
답안 코드 :
import math
Min, Max = map(int, input().split())
Check = [False] * (Max - Min + 1)
for i in range(2, int(math.sqrt(Max) + 1)):
pow = i * i
start_index = int(Min / pow)
if Min % pow != 0:
start_index += 1 # 나머지가 있는 경우 1을 더해 Min보다 큰 제곱수에서 시작하도록 설정
for j in range(start_index, int(Max / pow) + 1): # 제곱수를 True로 변경
Check[int((j * pow) - Min)] = True
count = 0
for i in range(0, Max - Min + 1):
if not Check[i]:
count += 1
print(count)
생각 :
# 문제 분석
# min의 최댓값이 1,000,000,000,000 으로 매우 큰 것 같지만
# min , max 사이의 수들 안에서 구하면 되니까
# 1,000,000의 데이터만 확인하면 된다
# 제곱수 판별을 일반적인 반복문 구하면 시간 초과 일 듯
# 에라토스테네스의 체 알고리즘 이용해서 풀장
# 문제 풀이
# 2의 제곱인 4부터 max 안에 제곱수들 찾기
# 데이터를 순차적 탐색 x
# 에라토스테네스의 체 방식으로 제곱수의 배수 형태로 탐색하기
# 시간복잡도 최소화 !!
정수론 정리 글들
https://mkisos.tistory.com/entry/%EC%A0%95%EC%88%98%EB%A1%A0-%EC%98%A4%EC%9D%BC%EB%9F%AC-%ED%94%BC
반응형
'코딩 도구 > 백준' 카테고리의 다른 글
백준 1934 파이썬 유클리드 호제법 (20) | 2024.06.01 |
---|---|
백준 11689 파이썬 오일러 피 (21) | 2024.05.31 |
백준 1747 파이썬 에라토스테네스의 체를 이용 팰린드롬 (20) | 2024.05.29 |
백준 1456 파이썬 거의 소수 (1) | 2024.05.28 |
백준 1929 파이썬 에라토스테네스 체 (0) | 2024.05.27 |