728x90
    
    
  728x90
    
    
    
  문제
숫자 N은 아래와 같다. 
N이 주어질 때 a, b, c, d, e 를 출력하라.
제약 사항
N은 2 이상 10,000,000 이하이다.
입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 
각 테스트 케이스의 첫 번째 줄에 N 이 주어진다.
출력
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다. 
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
예제
| [입력] | [출력] | 
| 10    6791400 1646400 1425600 8575 185625 6480 1185408 6561 25 330750  | 
#1 3 2 2 3 1  #2 6 1 2 3 0 #3 6 4 2 0 1 #4 0 0 2 3 0 #5 0 3 4 0 1 #6 4 4 1 0 0 #7 7 3 0 3 0 #8 0 8 0 0 0 #9 0 0 2 0 0 #10 1 3 3 2 0  | 
문제 해결 방법
- for 문을 이용하여 일일히 나누는 방식으로 문제를 해결하였다.
 - 나눠질 때마다(
N % div == 0) 해당answer배열의 인덱스에 있는 값을1씩 증가시켜주었다. 
			
			
			
		num_list = [2, 3, 5, 7, 11] answer = [0, 0, 0, 0, 0]   while N != 1:     for idx, div in enumerate(num_list):         if N % div == 0:             answer[idx] += 1             N = N // div 
코드
			
			
			
		T = int(input())   for test_case in range(1, 1 + T):     N = int(input())       num_list = [2, 3, 5, 7, 11]     answer = [0, 0, 0, 0, 0]       while N != 1:         for idx, div in enumerate(num_list):             if N % div == 0:                 answer[idx] += 1                 N = N // div          print(f"#{test_case}", end=' ')     print(' '.join(str(item) for item in answer)) 
참고
- 난이도: D2
 
소인수 분해 알고리즘
			
			
			
		def prime_factors(n):     factors = []     # 2로 나누어 떨어지는 동안 나눔     while n % 2 == 0:         factors.append(2)         n //= 2          # 3부터 시작하여 홀수 소수로 나눔     for i in range(3, int(n**0.5) + 1, 2):         while n % i == 0:             factors.append(i)             n //= i          # n이 소수인 경우     if n > 2:         factors.append(n)          return factors 
참고 사이트
[Algorithm] 소인수 분해(Prime/Integer Factorization)
소인수 분해(Prime/Integer Factorization) 개념 특정 자연수를 1보다 큰 자연수인 소인수(소수인 인수)들만의 곱으로 표현하는 것 합성수를 소수의 곱으로 나타내는 방법 소인수 분해를 일의적으로 결
dev-astra.tistory.com
728x90
    
    
  728x90
    
    
    
  'Problem Solving > SWEA' 카테고리의 다른 글
| [SWEA-1285][C++] 아름이의 돌 던지기 (0) | 2023.10.23 | 
|---|---|
| [SWEA-1288][Python] 새로운 불면증 치료법 (1) | 2023.10.23 | 
| [SWEA-1928][Python] Base64 Decoder (0) | 2023.10.23 | 
| [SWEA-1940][Python] 가랏! RC카! (1) | 2023.10.19 | 
| [SWEA-1946][Python] 간단한 압축 풀기 (1) | 2023.10.19 | 
| [SWEA-1948][Python] 날짜 계산기 (1) | 2023.10.19 | 
| [SWEA-1954][Python] 달팽이 숫자 (1) | 2023.10.18 | 
| [SWEA-1959][Python] 두 개의 숫자열 (0) | 2023.10.17 |