말하는 컴공감자의 텃밭

백준 9056 약수들의 합 - 파이썬(python3) join 본문

알고리즘/Backjoon - Python3

백준 9056 약수들의 합 - 파이썬(python3) join

현콩 2023. 5. 13. 14:11
728x90

백준 9056 약수들의 합
오늘도 문제는 간단

먼저 -1 이 나오기 전까지 입력을 받고, n의 약수를 구한 후 리스트에 넣고, 그 합이 n이 된다면 출력하면 되겠죠

간단

근데 웬걸,,, 저는 파이썬 출력 저걸 어떻게 해야하지 싶었네요 껄껄

 

아 어캐해

문자열을 반복적으로 출력해본것도, 리스트 출력도 처음이라 찾아봤습니다.

.join() 이놈이 있더라구요

 

1
2
3
4
5
6
my_list = ['Hello''World''Python']
result = ' '.join(my_list)
print(result)
>> Hello World Python
 
 
cs

join 앞에 구분지을 요소를 넣어주면, 리스트를 순차적으로 출력해줍니다. 예제처럼 ' '  넣으니 공백이 들어간 상태로

Hello World Python 가 출력이 됩니다.

 

1
2
3
4
5
6
7
8
9
my_list = ['Hello''World''Python']
result = '\n'.join(my_list)
print(result)
>> 
Hello 
World 
Python
 
 
cs

 '\n'로 수정하면 이렇게 띄워지겠죠

 

그럼 Div [] 요소를 str로 반환하고, 반복해서 + 를 추가하여 출력하려면?

" + ".join(str(i) for i in Div) 로 출력하면 되겠죠

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
while(1):
    a = int(input())
    if a == -1:
        break
    
    Div = []
    for i in range(1, a//2+1):
        if a % i == 0:
            Div.append(i)
        
    if sum(Div) == a:
        print(a, "="" + ".join(str(i) for i in Div))
    else:
        print(a, "is NOT perfect.")
cs

 

깔꼼~

 

 

while(1):
    a = int(input())
    if a == -1:
        break                           // -1 입력 받을때 까지 반복.
    
    Div = []
    for i in range(1, a//2+1): // 약수 범위 반복, a//2+1 인 이유는 a가 10이면 5이상은 약수가 없죠
        if a % i == 0:
            Div.append(i)          // append로 리스트에 추가
        
    if sum(Div) == a:             // sum() 함수로 리스트의 합이 a인 경우 완전수
        print(a, "=", " + ".join(str(i) for i in Div))
    else:
        print(a, "is NOT perfect.")

728x90
Comments