안녕하세요~ 포스팅이 오랜만이네요.

전 오늘 핸드폰 액정이 깨져서 너무 슬프답니다 ㅠㅠ

다들 조심해서 쓰시길...

 

 

오늘의 문제는!!

주어진 정수 n의 각 자릿수를 큰수부터 작은 순으로 정렬한 정수를 반환하는 문제입니다.

만약 정수 n이 231 이라면 321 로 바꿔서 반환하면 되겠습니다 ㅎ

 

먼저! 정수 상태로는 각 자리수를 정렬하는게 불가능하니 list형으로 바꿔보겠습니다.

ls = list(str(n))

--print(ls) => ['2','3','1']--

ls라는 변수에 n의 각 자리수를 리스트로 만들어 넣었습니다.

 

여기서 정수 n을 먼저 string형태로 변환하지 않을 경우

'int' object is not iterable 이라는 오류가 뜨는데요,

왜냐하면 list() 함수는 반복 가능한(iterable) 인자만 가능하기 때문입니다! -> 문자열, 튜플, 딕셔너리 등등 …

 

이제 리스트로 만들어 뒀으니 큰 수부터 차례대로 정렬해보겠습니다.

ls.sort(reverse=True)

sort()를 사용해 작은수부터 정렬이 되었으니 reverse를 사용해 역정렬을 했습니다.

여기서 ls를 출력하면 어떻게 될까요? ↓

더보기

['3', '2', '1']

 

정수를 반환하라고 했으니 일단 모두 합쳐야겠죠~

리스트를 문자열로 합치는 함수인 join()을 사용해 줍니다!

''.join(ls)

공백이나 쉼표 없이 ls를 합쳤습니다.

여기서 잠깐!!!!!!!!

이대로 반환할 경우 "123"이라는 문자열이 되니 전체를 int()로 묶어 반환하면 정말 끝입니당ㅎㅎ

def solution(n):
    ls = list(str(n))
    ls.sort(reverse=True)
    return int(''.join(ls))

오늘따라 말이 너무 많았네요..

말을 줄이고 싶은데 다음 문제는 더 간단하게 설명해보도록 노력하겠습니다!!

봐주셔서 ㄳ

 

 

 

'파이썬 문제 풀기!' 카테고리의 다른 글

두 정수 사이의 합 구하기  (0) 2023.12.05
하샤드 수 검사하기  (1) 2023.10.31
정수의 제곱근 판별하기  (2) 2023.10.27
약수의 합 구하기  (1) 2023.10.26
짝수와 홀수 구하기  (0) 2023.10.26

+ Recent posts