본문 바로가기

Language/Python

약수 구하기 활용하기

프로그래머스에서 처음 약수의 개수를 구하는 알고리즘을 만들때

전부 구했더니 시간초과가 발생했다.

해결 방법은 반으로 나눠서 보는것이다. 신기했다.

물론 지금은 모든 약수의 개수를 구해야 풀 수 있는 문제를 풀었지만

 

1번 문제: 약수의 합이 자기 자신이 되는
                숫자 찾아서 형식에 맞게 출력
1. sorted(list(map(int,open(0).read().split())))

2.
print(" + ".join(map(str,yaksu(i)[:-1])))
 
리스트에 있는 원소 사이에 + 추가해서 추출 *str형식이여야함
2번 문제: 소수 찾기 for문 두개로 약수 개수 확인하고 소수 개수 출력하기

 

9506번: 약수들의 합

#약수의 합이 자기 자신이 되는 숫자 찾아서 형식에 맞게 출력
# 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.")

1978번: 소수 찾기

#약수가 자신을 제외하고 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