▶ 문제
함수 solution은 정수 n을 매개변수로 입력받음. n의 각 자릿수를 큰 것부터 작은 순으로 정렬한 새로운 정수를 리턴해라.
ex) n이 118372면 873211 리턴
▶ 제한조건
n은 1이상 8,000,000,000 이하 자연수
▶ 풀이
이거 배웠던거다!
.sort() 함수를 사용해서 정렬해주면 된다. 기본적으로 오름차순으로 정렬해주는데, 거꾸로 내림차순으로도 한번에 정렬할 수 있는 방법이 있었는데 기억이 안나서 찾아왔다.
(reverse = True) 를 적용하면 내림차순으로 정렬된다
def solution(n):
return n.sort(reverse=True)
# AttributeError: 'int' object has no attribute 'sort'
틀림..
숫자형 객체는 정렬하는 속성이 없다
그러고보니 '리스트' 공부할때 sort 함수가 나왔었다.
그럼 리스트로 만들어주기
def solution(n):
n_list = []
for i in str(n): # 문자로 바꿔서 반복하고
n_list.append(int(i)) # 숫자로 바꿔서 넣어주기
return n_list.sort(reverse=True)
# 실행한 결괏값 null이 기댓값 873211과 다릅니다.
null이 나온다....
왜지ㅜ 실험해보기
a = [1,1,8,3,7,2]
b = a.sort() # sort()
print(a) # [1,1,2,3,7,8] # a자체가 변경됨
print(b) # None # 반환값이 없음
sort() 함수를 사용해서 정렬된 a를 b에 저장하려했는데 암것도 저장 안됐다.
sort() : 리스트 자체를 변경(정렬)해버리고, 아무것도 반환하지 않는다
만약 정렬된 값을 따로 저장하고 싶다면 sorted() 함수를 사용해야한다.
a = [1,1,8,3,7,2]
c = sorted(a) # sorted()
print(a) # [1,1,8,3,7,2] # a는 그대로임
print(c) # [1,1,2,3,7,8] # 정렬값 저장됨
sorted() 함수를 사용하면 정렬된 a를 c에 저장할 수 있다!
sorted() : 리스트는 그대로 두고, 정렬된 결과값을 반환한다
따라서 sorted()를 사용하고, reverse=True 를 적용해서 다시 풀어보기.
def solution(n):
n_list = []
for i in str(n):
n_list.append(int(i))
return sorted(n_list, reverse=True)
# 실행한 결괏값 [8,7,3,2,1,1]이 기댓값 873211과 다릅니다.
아?
맞다 리스트에 추가했으니까 요소들을 다시 꺼내서 합쳐줘야된다...
빈문자열을 만들고 리스트를 돌면서 한개씩 더해준다.
문자열+문자열 = 이어진문자열 이니깐 원하는 결과가 나올 수 있다.
answer = "" # 빈문자열 생성
for j in n_list_reverse: # 위의 정렬된 리스트 돌면서
answer += str(j) # 문자로 바꿔서 문자열에 추가
return int(answer)
통과!
+
다른사람풀이 보면서 공부해봤는데 join() 이라는 함수를 사용하면 헛수고를 하지 않고 엄청 간략하게 풀 수 있었다..
그리고 굳이 리스트 안에 하나씩 담을 필요없이 문자열 자체를 정렬할 수도 있었다.....
그리고 심지어 문자열을 정렬하면 알아서 리스트로 반환해준다...
def solution(n):
n_sort = sorted(str(n), reverse=True)
answer = "".join(n_sort)
return int(answer)
"문자열"은 바로 sorted() 할 수 있고, 알아서 [리스트]로 반환된다!
"x".join() 함수 : 요소 사이에 x를 넣어 하나의 문자열로 합쳐준다
'codekata' 카테고리의 다른 글
[프로그래머스] #22 두 정수 사이의 합 (range(start,stop,step)) (0) | 2024.07.19 |
---|---|
[프로그래머스] #21 하샤드 수 (0) | 2024.07.19 |
[프로그래머스] #19 정수 제곱근 판별 (** % 잘쓰기) (0) | 2024.07.18 |
[프로그래머스] #18 문자열을 정수로 바꾸기 (0) | 2024.07.18 |
[프로그래머스] #17 자연수 뒤집어 배열로 만들기 (reverse) (0) | 2024.07.18 |