🗒️ 파이썬 코드 풀이
T = int(input())
for test_case in range(1, T + 1):
N = int(input())
lst = [2,3,5,7,11]
cnts = [0] * 5
for i in range(5) :
while N % lst[i] == 0 :
cnts[i] += 1
N = N / lst[i]
print(f"#{test_case} {' '.join(list(map(str,cnts)))}")
1. 소인수 리스트와 카운트를 해줄 리스트를 만들어준다.
2. 소인수 리스트들을 반복문과 while문으로 돌려 지수의 개수를 찾아준다.
📌 내가 작성한 코드
T = int(input())
for test_case in range(1, T + 1):
N = int(input())
dic = {
2 : 0,
3 : 0,
5 : 0,
7 : 0,
11 : 0
}
lst = [2,3,5,7,11]
while lst :
if N % lst[0] == 0 :
dic[lst[0]] += 1
N = N/lst[0]
else :
lst.pop(0)
ans = list(dic.values())
print(f"#{test_case} {' '.join(list(map(str,ans)))}")
간단한 문제이다... 굳이 내가 작성한 것 처럼 안해도 된다.
내 풀이는 리스트와 딕셔너리를 각각 만들고, 리스트가 None이 될때까지 while문을 돌리는 것이다.
더 이상 필요없는 값은 다음 카운트를 위하여 pop을 한다.
문제를 풀 때 0행렬을 이용해서 푸는 것을 기피하는 것 같다.
오히려 저렇게 하는게 훨씬 더 쉬우니 다음에는 0행렬로 풀어보자 !!
참고로 두 코드 메모리와 실행시간에서 큰 차이는 없다.
📚 문제
숫자 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부터 시작한다.)
'알고리즘 > 알고리즘_swea' 카테고리의 다른 글
[Python][SWEA] 3282. 0/1 Knapsack D3 (0) | 2024.05.11 |
---|---|
[Python][SWEA] 6190. 정곤이의 단조 증가하는 수 D3 (0) | 2024.05.09 |
[Python][SWEA] 6808. 규영이와 인영이의 카드게임 (0) | 2024.05.08 |
[Python][SWEA] 11315. 오목 판정 D3 (0) | 2024.05.08 |
[Python][SWEA] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 D3 (0) | 2024.05.07 |