math
-
[백준 4948번] 베르트랑 공준Coding Test/백준 2021. 3. 6. 22:09
# 문제 내 풀이 - 시간 초과, 수정 답안 n = 123456 * 2 # 2부터 (2 * 123456)까지의 모든 수에 대하여 소수 판별 # 처음엔 모든 수를 소수(True)인 것으로 초기화(0, 1은 제외) array = [True for _ in range(2 * n + 1)] # 에라토스테네스의 체 알고리즘 수행 # 2부터 2n의 제곱근까지의 모든 수에 대하여 for i in range(2, int((2 * n) ** 0.5) + 1): if array[i] == True: # i를 제외한 i의 모든 배수를 지우기 j = 2 while i * j 1 and array[i]: cnt += 1 # 개수 출력 print(cnt) 생각해볼 점 에라토스테네스의 체의 시간복잡도가 매우 빠르긴 하지만, 테스트..
-
[백준 1929번] 소수 구하기Coding Test/백준 2021. 3. 4. 23:43
# 문제 내 풀이 m, n = map(int, input().split()) # 처음엔 모든 수를 소수(True)인 것으로 초기화(0, 1은 제외) array = [True for i in range(n + 1)] # 에라토스테네스의 체 알고리즘 수행 # 2부터 n의 제곱근까지의 모든 수를 확인하며 for i in range(2, int(n ** 0.5) + 1): if array[i] == True: # i를 제외한 i의 모든 배수를 지우기 j = 2 while i * j 1 and array[i]: print(i) 생각해볼 점 마지막 출력에서 1을 거르는 조건을 생각하지 못해 오래 걸렸다. 예외 케이스를 항상 염두하자.
-
[백준 1978번] 소수 찾기Coding Test/백준 2021. 2. 25. 23:38
# 문제 내 풀이 # 내 풀이 n = int(input()) nums = list(map(int, input().split())) result = 0 # 소수의 개수 # 주어진 수들 각각에 대하여 연산 수행 for num in nums: # 1은 소수가 아니므로 제외 if num == 1: continue check = True # 소수 판별을 위한 flag # 1과 자기 자신을 제외한 모든 수에 대하여 for i in range(2, num): # 나누어 떨어지면 소수가 아님 if num % i == 0: check = False break # 소수라면 개수 count if check: result += 1 # 결과 출력 print(result)