티스토리 뷰
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한 조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
내 답안
func solution(_ strings:[String], _ n:Int) -> [String] {
return strings.sorted {
let a = Array($0)[n]
let b = Array($1)[n]
if a == b {
return $0 < $1
} else {
return a < b
}
}
}
접근 방법
- 먼저 strings의 단어(string)을 배열로 바꾸기-> Array() 생성자를 사용하면 된다
- 정렬 -> sorted 사용
다른 풀이
func solution(_ strings:[String], _ n:Int) -> [String] {
return strings.sorted{ Array($0)[n] == Array($1)[n] ? $0 < $1 : Array($0)[n] < Array($1)[n] }
}
func solution(_ strings:[String], _ n:Int) -> [String] {
let answer: [String] = strings.sorted {
let left: Character = $0[$0.index($0.startIndex, offsetBy: n)]
let right: Character = $1[$1.index($1.startIndex, offsetBy: n)]
if left == right {
return $0 < $1
} else {
return left < right
}
}
return answer
}
알게 된 것
- Array() 생성자
- String.index(i, offsetBy: j) : 문자열의 n번째 글자 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/12915
'코딩테스트' 카테고리의 다른 글
10월 20일 - 음양 더하기 swift (0) | 2023.10.20 |
---|---|
10월 19일 - 가장 가까운 같은 글자 swift (0) | 2023.10.19 |
10월 19일 - 서울에서 김서방 찾기 swift (0) | 2023.10.19 |
10월 18일 - 행렬의 덧셈 swift (0) | 2023.10.19 |
10월 18일 - 콜라츠 추측 swift (0) | 2023.10.19 |
최근에 올라온 글