본문 바로가기

Algorithms

[문제풀이] 백준 11653번 문제 소인수분해

오랜만에 알고리즘을 풀려고하니 생각대로 되지 않았다.

(짧은 코드였지만 꽤나 오래걸렸다는 후문...)

 

1. 문제 목표

Case를 전달 받은 후 소인수분해하고, 소수들을 오름차순 정렬하여 출력할 것

 

2. 접근 방법

  • 나누는 값을 2 부터 Case까지 증가시켜가면서, 나머지가 0으로 떨어지는 경우 리스트에 값 삽입
  • 오름차순으로 정렬한 후 출력한다
case = int(input())

sqrt = int(str(math.sqrt(case)).split(".")[0])
resultList = list()

while case != 1:
    for i in range(2, case + 1):
        if case % i == 0:
            case = case // i
            resultList.append(i)
            break

resultList.sort()

for prime in resultList:
    print(prime)