🎨 [문제]
N=2a x 3b x 5c x 7d x 11e
N이 주어질 때 a, b, c, d, e 를 출력하라.
[input]
10
6791400
1646400
1425600
8575
185625
6480
1185408
6561
25
330750
[output]
#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
[풀이 1]
import sys
sys.stdin = open("input.txt")
T = int(input())
for tc in range(1, T+1):
N=int(input())
num_list=[2, 3, 5, 7, 11]
result=[0, 0, 0, 0, 0]
# N을 2, 3, 5, 7, 11로 나누었을 때 나머지(%)가 0이면 소인수!
for i in range(len(num_list)):
while N%num_list[i] == 0:
N = N // num_list[i]
# 나머지가 0이면 1을 올려줌
result[i]+=1
# ''.join을 하면 list에서 str으로 바꿔준다.
print("#{} {}".format(tc, ''.join(map(str,result))))
[풀이 2]
import sys
sys.stdin = open("input.txt")
T = int(input())
for tc in range(1, T+1):
N = int(input())
nums = [2, 3, 5, 7, 11]
new_list = []
for i in nums:
cnt = 1
while True:
if N%i != 0:
break
N = N//i
cnt += 1
cnt -= 1
new_list += [str(cnt)]
print("#{} {}".format(tc,' '.join(new_list)))
🍦 [복습]
# 1. 210225
while문은..너무 어렵다..
그리고 여전히 처음 보는 유형의 문제를 접했을 때
어떻게 다가가야할지 잘 모르겠다..
오늘도 난 운다...^^
# 2. 210301
숫자를 i로 나누어주었을 때 나머지가 0이 아닌 값으로 나오면 i로 나눌 수 있는 최대로 나누었다는 뜻.
더이상 i로 나눌 수 없기 때문에 다음 i값으로 나누어주어야 한다.
17, 11, 3 등은 소수이다. 약수가 자기자신과 1밖에 없는 자연수.
# 3. 210307
갑자기 위의 풀이 2 방식으로 풀어버렸다.
갑자기 잘되네..
나만의 방식으로 푸니까 잘 풀리는 것 같다.
#4. 2103011
# join은 문자열만 가능. 리스트에서 join해주려면 요소들이 str값이어야 한다.
# 아니면 map해주던가
'# 3. APS > SWEA' 카테고리의 다른 글
SWEA # Python_D2_4828_min max ✅ (0) | 2021.02.17 |
---|---|
SWEA # Python_D2_11454_Baby-gin Game (0) | 2021.02.16 |
SWEA # Python_D1_2019_더블더블 ✅ (0) | 2021.02.15 |
SWEA # Python_D1_2029_몫과 나머지 출력하기 ✅ (0) | 2021.02.15 |
SWEA # Python_D1_1938_아주 간단한 계산기 ✅ (0) | 2021.02.15 |