728x90
https://programmers.co.kr/learn/courses/30/lessons/12915?language=swift
정렬 level1
문자열 배열을 인덱스 n번째 문자를 기준으로 사전순으로 정렬한 배열을 반환하는 문제
접근방법
사용자 정의 정렬이다.
C++에서 sort 라이브러리 함수에 자체적으로 구현한 compare함수를 전달하는 것과 같은 방식으로
swift에서도 Array의 sorted()메서드의 by 매개변수로 클로저나 함수를 전달하여 사용할 수 있다.
*sort()와 sorted() 메서드의 차이점
: sort()는 기존 array의 순서를 변경하고, sorted()는 기존 array는 그대로 두고 복사된 array를 정렬하여 반환
이 문제를 풀면서 Swift String이 Subscript가 안되는 것이 매우 불편했다.
String을 Character들의 배열로 사용하는 것에 익숙해서 -> 이렇게 풀고 싶다면 String을 Array로 변환하여 사용하면 된다. (solution2)
index를 만들어 사용하는 것이 조금 불편했다. (solution1)
소스코드
import Foundation
func solution1(_ strings:[String], _ n:Int) -> [String] {
return strings.sorted {
let index0 = $0.index($0.startIndex, offsetBy: n)
let index1 = $1.index($1.startIndex, offsetBy: n)
if $0[index0] == $1[index1] { return $0 < $1 }
else { return $0[index0] < $1[index1] }
}
}
func solution2(_ strings:[String], _ n:Int) -> [String] {
return strings.sorted { Array($0)[n] == Array($1)[n] ? $0 < $1 : Array($0)[n] < Array($1)[n] }
}
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 로또의 최고순위와 최저순위 (Swift) (스터디) (0) | 2022.02.19 |
---|---|
[프로그래머스] #139 하샤드 수 (Swift) (0) | 2022.02.18 |
[프로그래머스] #137 소수 만들기 (Swift) (0) | 2022.02.16 |
[프로그래머스] #136 로또의 최고순위와 최저순위 (Swift) (0) | 2022.02.16 |
[프로그래머스] #135 예산 (Swift) (0) | 2022.02.11 |