https://school.programmers.co.kr/learn/courses/30/lessons/12915
문제
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한 조건
strings는 길이 1 이상, 50 이하인 배열입니다.
strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
모든 strings의 원소의 길이는 n보다 큽니다.
인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
풀이
class Solution {
fun solution(strings: Array<String>, n: Int): List<String> =
strings.sortedWith(compareBy({ it[n] }, { it }))
}
- 문자열들을 정렬하라는 문제입니다. 특이한것은 n이라는 매개변수를 주어 문자열의 해당 index를 우선시하라는 말입니다. sortedWith를 2번 사용하여 해당 배열을 정렬할 수도 있지만 그럴 경우 소스가 길어지고 심지어 이러한 정렬을 사람들이 이해를 못 하는 사람이 생길 수도 있습니다. 이럴 때 compareBy를 이용하여 비교를 어떻게 할 것인지 정해줄 수 있습니다. 위코드는 compareBy를 이용한 풀이입니다.
결과
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 직사각형 넓이 구하기 (Kotlin) (0) | 2023.08.02 |
---|---|
[프로그래머스] - [1차] 비밀지도 (Kotlin && JAVA) (0) | 2023.08.02 |
[프로그래머스] - 평행 (Kotlin) (0) | 2023.08.01 |
[프로그래머스] - 안전지대(Kotlin) (0) | 2023.08.01 |
[프로그래머스] - 캐릭터의 좌표(Kotlin) (0) | 2023.08.01 |