본문 바로가기
Algorithm

[프로그래머스] 문자열 내 마음대로 정렬하기 - Kotlin

by KJ_Hyeon_ 2023. 12. 7.

문자열 내 마음대로 정렬하기 문제
입출력 예시


문제 생각해보기

  • 각 배열의 원소의 N 번째 인덱스를 기준으로 정렬하면 될거같은데?

풀이 코드

class Solution {
    fun solution(strings: Array<String>, n: Int): Array<String> {
        var answer = arrayOf<String>()
        answer = strings.also {
            it.sort()
            it.sortBy{it[n]}
        }
        return answer
    }
}

 

 

생각대로 N번째 인덱스를 기준으로 정렬만 하면 되는 간단한 문제였지만 생각보다 시간이 오래 걸렸다. 그 이유는...

이 제한조건을 보지 못하고 풀고 있었기 때문이다.. ㅜㅜ

제한조건을 꼭 제대로 보자는 교훈을 주는 문제였다. ㅎㅎ

 

이 문제를 풀면서 스코프 함수인 also와 정렬할 때 사용하는 sort()와 sorted()의 차이에 대해서 한번 알아보았다.

스코프 함수는 블로그에 추후에 정리할 예정이다. 오늘은 also에 대해서 간단하게 알아보자면

 

also - 객체의 프로퍼티를 사용하지 않거나 변경하지 않고 사용하는 경우 유용하다.

  • 'it'을 통해서 스코프 내에서 객체에 접근이 가능하다.
  • 생성된 인스턴스를 반환한다. (객체 자신?)

sort()와 sorted()의 차이

  • sort()는 list 클래스의 메소드로 list객체에서만 사용할 수 있다. ex) list.sort()
    실행 시, 기본적으로 오름차순으로 list를 정렬하며 반환값은 없다. 
  • sorted() 메소드는 iterable 객체를 파라미터로 받으며, 대표적인 iterable에는 list,string,set 등이 있다. ex) sorted(list)
    실행 시, 기본적으로 오름차순으로 객체를 정렬하고, 정렬된 iterable를 반환한다.