문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다.
제한사항
입출력 예
strings | n | return |
---|---|---|
["sun", "bed", "car"] | 1 | ["car", "bed", "sun"] |
["abce", "abcd", "cdx"] | 2 | ["abcd", "abce", "cdx"] |
예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
문제점: 동일한 문자가 뽑힌 경우, 원본 문자열로 비교해야 하는데 이러면 조건문이 다시 추가되고 메모리 오류가 발생했다.
직접적으로 strings의 각 element의 해당 문자를 비교해서 sort를 해주면 될 것이다.
String 타입은 직접적으로 Int 타입을 통한 subscript를 활용해 해당 element를 찾을 수 없으므로, Index를 활용해서 구하려면 String.Index가 필수이다.
하지만 String 타입의 element를 [String]으로 변환해서 활용하면 각 문자는 Int 타입으로 subscript 접근이 가능하다.
import Foundation
func solution(_ t:String, _ p:String) -> Int {
//기본: 문자 기준 오름차순 정렬하기
//같은 문자인 경우: 원본으로 비교, 오름차순 정렬
return strings.sorted { Array($0)[n] == Array($1)[n] ? $0 < $1 : Array($0)[n] < Array($1)[n] }
}