코틀린(Kotlin)/프로그래머스

[프로그래머스/코틀린(Kotlin)] 문자열 내 마음대로 정렬하기

초보왕보초 2023. 11. 23. 20:32
728x90

문자열로 구성된 리스트를 받아, 각 문자열의 n번째 인덱스를 기준으로 오름차순 하기

예시)

 

풀이

  • sortedWith(compareBy)를 사용하여 다중기준을 두고 오름차순 정렬 

 

제출 코드

(코드 해석해 보기)

sortedWith()에서 comparator를 활용하여 첫 번째는 인덱스[n]번째를 기준으로,

그다음 기준은 [제한 조건]에 있는 n번째 인덱스가 같은 문자열일 경우, 사전순으로 배치시킨다

.toTypedArray()로 string타입을 Array타입으로 변형시켜 준다

 

 

 


 

 

 

 

sortedBy()

selector를 지정하여 기준을 정할 수 있다

-> ??.sortedBy{ it.first }

내림차순으로 사용하고 싶을 땐 sortedByDescending()

-> ??.sortedByDescending{ it.first }

 

 

sortedWith()

comparator를 사용하여 다중 기준을 둘 수 있다

sortedBy는 하나의 기준을 둘 수 있지만, sortedWith()는 compareBy를 이용해서 여러 개의 기준을 둘 수 있다

-> ??.sortedWith(compareBy( { it.first }, { it.second } ))

sortedBy와는 다르게 

내림차순으로 사용하려면 뒤에 .reversed()를 붙여줘야 한다

-> ??.sortedWith(compareBy( { it.first }, { it.second } )).reversed()

 

 

-ed

  • -ed가 들어간 정렬 메소드는 Immutable, mutable 리스트에 모두 사용할 수 있으며, 메소드가 적용된 새로운 리스트를 리턴한다
  • -ed가 붙지않은 정렬 메소드(sort, sortBy, sortWiith..)는 Mutable 리스트에 사용할 수 있으며, 메소드를 자기 자신에게 적용시킨다

Immutable 리스트는 원본을 변경하지 않고 정렬된 리스트를 새로 리턴한다 / (원본 따로, 리턴값 따로)

( reversed() -> immutable 리스트에 사용되며, 역순으로 변경된 리스트를 생성하고 리턴한다 )

mutalble 리스트는 원본을 수정하여 리턴한다 / (원본 -> 변경된 수정값)

( reverse() -> mutable 리스트에 사용되며, 리스트 자신의 element 순서를 반대로 변경한다 )

728x90