Hits

안녕하세요. 모카의 머신러닝 입니다. 이번 포스팅에서는 백준 알고리즘 문제 풀이에 대해 포스팅하도록 하겠습니다.


코드는 이곳을 참고했음을 밝힙니다.


1. Number theory

백준 1929번

https://www.acmicpc.net/problem/1929

import math
M, N = map(int, input().split())
A = [0]*(N+1)

for i in range(2, N+1):
    A[i] = i
    
for i in range(2, int(math.sqrt(N)) + 1):
    if A[i] == 0:
        continue
    for j in range(i+i, N+1, i):
        A[j] = 0

for i in range(M, N+1):
    if A[i] != 0:
        print(A[i])


백준 1456번

https://www.acmicpc.net/problem/1456

import math
Min, Max = map(int, input().split())
A = [0] * (10000001)

for i in range(2, len(A)):
    A[i] = i
    
for i in range(2, int(math.sqrt(len(A))+1)):
    if A[i] == 0:
        continue
    for j in range(i+i, len(A), i):
        A[j] = 0
        
count = 0

for i in range(2, 10000001):
    if A[i] != 0:
        temp = A[i]
        while A[i] <= Max / temp:
            if A[i] >= Min / temp:
                count += 1
            temp = temp * A[i]
            
print(count)


백준 1747번

https://www.acmicpc.net/problem/1747

import math
N = int(input())
A = [0] * (10000001)

for i in range(2, len(A)):
    A[i] = i
    
for i in range(2, int(math.sqrt(len(A))+1)):
    if A[i] == 0:
        continue
    for j in range(i+i, len(A), i):
        A[j] = 0
        
def isPalindrome(target):
    temp = list(str(target))
    s = 0
    e = len(temp) - 1
    while (s < e):
        if temp[s] != temp[e]:
            return False
        s += 1
        e -= 1
    return True

i = N
while True:
    if A[i] != 0:
        result = A[i]
        if (isPalindrome(result)):
            print(result)
            break
    i += 1


백준 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
    for j in range(start_index, int(Max/pow)+1):
        Check[int((j*pow)-Min)] = True

count = 0

for i in range(0, Max - Min + 1):
    if not Check[i]:
        count += 1

print(count)


백준 11689번

https://www.acmicpc.net/problem/11689

import math
N = int(input())
result = N

for p in range(2, int(math.sqrt(N))+1):
    if N%p == 0:
        result -= result / p
        while N%p == 0:
            N /= p
            
if N > 1:
    result -= result / N

print(int(result))


지금까지 백준 알고리즘 정수론 1 부분이었습니다.

읽어주셔서 감사합니다. 😃