본문 바로가기
백준

[2321] 수 복원하기 - python 풀이

by mlice1030 2022. 3. 23.

알고리즘 설계 기법

  • 소인수분해 알고리즘
핵심 "어떤 수 X를 소인수분해 하려면 X를 2부터 차례대로 X의 제곱근까지의 숫자로 나누어 떨어지는지 검사"하면 된다.
하지만 for문을 쓰면 쓸데없이 소스가 길어지기 때문에 while문을 활용해서 나눈 값이 0이면 출력하는 방식으로 프로그래밍 하는것이 효율적이다.

N = int(input())
T = []
for _ in range(N):
    T.append(int(input()))

for i in T:
    k = 2
    count = 0
    while i != 1:
        if i % k == 0:
            i //= k
            count += 1
        else:
            if count != 0: print(k, count)
            k += 1
            count = 0
    if count != 0: print(k, count)

문제 풀러가기

 

2312번: 수 복원하기

첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다.

www.acmicpc.net

해답을 얻은 곳 : https://agileflame.tistory.com/5

 

'백준' 카테고리의 다른 글

[미해결][12976] 돌 옮기기 - python 코드  (0) 2022.03.23
[3029] 경고 - python 풀이  (0) 2022.03.22
[3028] 창영마을 - python 풀이  (0) 2022.03.22
[12887] 경로 게임 - python 풀이  (0) 2022.03.19
[14501] 퇴사 - python 풀이  (0) 2022.03.18

댓글