PROGRAMMERS level1 문자열 내림차순으로 배치하기

🔗 출처

프로그래머스 level1 : 문자열 내림차순으로 배치하기

📄 문제

❓ 고민

sort()와 sorted()는 뭐가 다를까?
파이썬에서는 리스트를 문자열로 어떻게 변환할까?

❗️ 깨달음 - sort() vs sorted()

먼저 sort()의 경우 리스트만을 위한 메소드로, 리스트 원본 자체를 변경해 버린다.
따라서 다음과 같이 사용할 수 있다.

myList = [4, 2, 3, 5, 1]
myList.sort()
print(myList) # [1, 2, 3, 4, 5]

반면 sorted()의 경우, 파이썬의 내장함수로 원본 값을 그대로 두고 이터러블 객체로부터 정렬된 리스트를 생성한다.
참고로 sorted()의 경우 리스트가 아니어도 문자열, 딕셔너리 등 어떤 이터러블 객체도 받을 수 있다.
단, 정렬 후 반환 타입은 모두 리스트가 된다.
따라서 다음과 같이 사용할 수 있다.

myList = [4, 2, 3, 5, 1]
newList = sorted(myList) # 원본은 유지하고 정렬된 새 리스트를 만듬
print(myList) # [4, 2, 3, 5, 1]
print(newList) # [1, 2, 3, 4, 5]

key 매개변수

추가로, 객체의 데이터 중 특정한 데이터를 기준으로 정렬하고 싶을때, key 매개변수를 이용할 수 있다.
예를 들어, 이차원 리스트를 각 행의 인덱스 2 기준으로 정렬하고 싶다면, 다음과 같이 사용할 수 있다.

myList = [[1, 2, 3], [3, 1, 2], [2, 3, 1]]
print(sorted(myList, key = lambda x : x[2])) #[[3, 1, 2], [1, 2, 3], [2, 3, 1]]

reverse 매개변수

reverse 변수는 bool형으로 True이면 내림차순, False이면 오름차순을 반환한다.
따라서 내림차순으로 정렬할 때에는 다음과 같이 사용한다.

myList = [4, 2, 3, 5, 1]
myList.sort(reverse = True)
print(myList) # [5, 4, 3, 2, 1]

❗️ 깨달음 - list to String?

1. str 리스트의 경우

str.join() 메소드를 사용하여 str 타입 요소가 있는 리스트를 문자열로 반환할 수 있다.

strList = ["a", "b", "c"]
str = "".join(strList)
print(str) # "abc"

join 앞의 문자열 ""는 각 요소 사이에 삽입되는 값이다.
따라서, 요소 사이에 ,를 추가하려면 다음과 같이 사용한다.

strList = ["a", "b", "c"]
str = ",".join(strList)
print(str) # "a,b,c"

2. str이 아닌 리스트의 경우

join() 메소드는 매개 변수로 str 데이터 타입이 필요하다.
따라서 다른 타입을 리스트에 join하려면 str 타입으로 변환 후 사용해야 한다.
먼저, for문을 이용하면 다음과 같이 사용할 수 있다.

intList = [1, 2, 3]
i = "".join([str(x) for x in intList])
print(i) # "123"

다음으로, map을 이용하면 다음과 같이 사용할 수 있다.

intList = [1, 2, 3]
i = "".join(map(str, intList))
print(i) # "123"

💡 나의 코드

def solution(s):
    return ''.join(sorted(s, reverse=True))

좋은 웹페이지 즐겨찾기