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))
Author And Source
이 문제에 관하여(PROGRAMMERS level1 문자열 내림차순으로 배치하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pup-paw/PROGRAMMERS-level1-문자열-내림차순으로-배치하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)