본문 바로가기

Python 연습문제

정수 내림차순으로 배치하기

 

 

 

n=118372
str(n)
print(str(n)[2])

n은 정수로 주어지기에 이전에 풀어본것 처럼 리스트로 만들어서 순서대로 정렬한뒤 10의 단위를 곱해서 더해주면 된다고 접근을 시작함

list_a=[1,3,7,4,2,3]
list_a.sort()
print(list_a)
print(list_a[-1])
print(list_a[-3])
print(list_a[-6])
print(list_a[0])

 

리스트에서 각 요소를 뽑아내는데 i번째 자리라고 한다면 일의 자리는 10**(i-1) 이 되고 이러한 규칙성을 찾았을때

0이 아니라 -1 -2 -3 -4 -5 -6 으로 접근하면 각 단위별로 10승으로 표현이 가능하다고 판단함

def solution(n):
    answer=[]
    for i in range(0,5):
        answer.append(str(n)[i])
    answer.sort(reverse=True)
    return answer
print(solution(118372))

 

for문을 돌려 리스트를 뽑아 보니 이게 문자형 이라서 곱하기 더하기가 안되네......?

 

찾아보니 map 함수를 쓰면 굳이 for문 돌리기 않고도 리스트르 뽑아내는게 가능하단걸 알았음

n=118372
list_n=list(map(int,str(n)))
list_n.sort(reverse=True)

print(list_n)

 

 

def solution(n):
    list_n = list(map(int, str(n)))
    list_n.sort(reverse=True)
    answer=0
    for i in range(1, len(str(n))+1):
        answer=answer+list_n[-i]*10**(i-1)
    return answer

 

오래도 걸렸다 후