프로그래머스에서 처음 약수의 개수를 구하는 알고리즘을 만들때
전부 구했더니 시간초과가 발생했다.
해결 방법은 반으로 나눠서 보는것이다. 신기했다.
물론 지금은 모든 약수의 개수를 구해야 풀 수 있는 문제를 풀었지만
1번 문제: 약수의 합이 자기 자신이 되는 숫자 찾아서 형식에 맞게 출력 |
1. sorted(list(map(int,open(0).read().split()))) 2. print(" + ".join(map(str,yaksu(i)[:-1]))) 리스트에 있는 원소 사이에 + 추가해서 추출 *str형식이여야함 |
2번 문제: 소수 찾기 | for문 두개로 약수 개수 확인하고 소수 개수 출력하기 |
#약수의 합이 자기 자신이 되는 숫자 찾아서 형식에 맞게 출력
# sorted(list(map(int,open(0).read().split())))
# print(" + ".join(map(str,yaksu(i)[:-1])))
# ->리스트에 있는 원소 사이에 + 추가해서 추출 *str형식이여야함
a = sorted(list(map(int,open(0).read().split())))
def yaksu(num):
yaksu_list = []
for n in range(1,num+1):
if num%n == 0:
yaksu_list.append(n)
return yaksu_list
for i in a:
if sum(yaksu(i)[:-1]) == i:
print(yaksu(i)[-1],'='," + ".join(map(str,yaksu(i)[:-1])))
elif i == -1:
pass
else:
print(yaksu(i)[-1],"is NOT perfect.")
#약수가 자신을 제외하고 1밖에 없는 수 구하기
#for문 두개로 약수 개수 확인하고 소수 개수 출력하기
num,*num_list = map(int,open(0).read().split())
answer = 0
for n in num_list:
yaksu = 0
for i in range(1,n):
if n%i == 0:
yaksu += 1
if yaksu == 1:
answer += 1
print(answer)
'Language > Python' 카테고리의 다른 글
재귀함수 (0) | 2023.08.03 |
---|---|
알고리즘 Cheat Sheet (0) | 2023.07.10 |
괜히 어렵게 풀었다! (0) | 2023.03.30 |
간단하게 접근하기 (0) | 2023.03.24 |
슬라이싱과 넘파이 활용하기 (0) | 2023.03.23 |