just inside

[SWEA/D2] 1945. 간단한 소인수분해 본문

coding test/SWEA

[SWEA/D2] 1945. 간단한 소인수분해

방울도마도 2024. 10. 31. 17:27
728x90

[문제 링크]

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pl0Q6ANQDFAUq


[문제 설명]

숫자 N은 아래와 같다.

N=2a x 3b x 5c x 7d x 11e

N이 주어질 때 a, b, c, d, e 를 출력하라.


[제약 사항]

 

N은 2 이상 10,000,000 이하이다.


[입력]

 

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에 N 이 주어진다.

 

[출력]

 

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)


제출 코드

t = int(input())

for i in range(1, t+1):
    n = int(input())
    
    nums = [2,3,5,7,11]   # 소인수 저장
    res = [0,0,0,0,0]     # 소인수별 제곱수 저장
    
    # 각 소인수에 대해 확인
    for j in range(5):
        while True:
            if n % nums[j] == 0:  # 나누어 떨어지면 제곱수 +1
                res[j] += 1
                n //= nums[j]
            else:
                break
    print('#'+str(i),*res, sep=' ')

 

풀이

  • 각 소인수로 나누어 떨어지는지 확인해주고, 나누어 떨어지면 제곱수 + 1을 한 후 몫으로 갱신한다.

알아둘 사항

  •  
728x90

'coding test > SWEA' 카테고리의 다른 글

[SWEA/D2] 1948. 날짜 계산기  (0) 2024.10.31
[SWEA/D2] 1946. 간단한 압축 풀기  (0) 2024.10.31
[SWEA/D2] 1940. 가랏! RC카!  (0) 2024.10.31
[SWEA/D2] 1926. 간단한 369게임  (0) 2024.10.31
[SWEA/D2] 1859. 백만 장자 프로젝트  (0) 2024.10.31