[TIL] 오늘의 공부/코딩테스트

11653번 소인수 분해

개발소연자 2023. 1. 26. 11:11

 

def prime(N):
    prime_list = []
    for i in range(2, N):
        is_prime = True
        for j in range(2, i):
            if i%j == 0:
                is_prime = False
                break
        if is_prime == True:
            prime_list.append(i)
    return prime_list

N = int(input())
prime_list = prime(N)
while N > 1:
    if N%prime_list[0] == 0:
        N //= prime_list[0]
        print(prime_list[0])
    else:
        prime_list.pop(0)​
N = int(input())
prime = 2
while N > 1:
    if N%prime == 0:
        N //= prime
        print(prime)
    else:
        prime += 1
        for i in range(2, prime):
            if prime%i == 0:
                prime += 1
                break

위에 코드가 더 가독성 좋은데 시간 복잡도가 높음
얼마 차이 안나 보이는데 왜지
요즘 자꾸 백준에서 시간 초과로 튕긴다..
아 코딩 테스트 보고 취업하고 싶은데.. 어렵네..
 
https://github.com/annkwon1123/100jun.git

GitHub - annkwon1123/100jun

Contribute to annkwon1123/100jun development by creating an account on GitHub.

github.com

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

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net