📌 문제
코딩테스트 연습 - 문자열 내림차순으로 배치하기 | 프로그래머스 스쿨
📌 풀이
(1) 아스키 값으로 변환하기
아스키 값으로 변환하고 내림차순으로 정렬한 다음 다시 문자열로 변환하는 방법이 있다.
- 문자열을 한 글자씩 아스키 값(8비트)으로 변환하는 메서드 asciiValue()를 사용한다.
- 내림차순으로 정렬한다.
- UnicodeScalar()로 아스키 값을 다시 문자열로 변환하여 한 글자씩 연결한다.
(2) sorted() 메서드 이용하기
정말 허무하게도 sorted()와 클로저를 활용하면 한 줄로 표현이 가능하다. 문자열도 정렬이 바로 가능한 줄 몰랐다... 이게 돼?
단, 메서드를 사용하면 Array<Character> 형태인데, 이를 다시 형 변환하여 String으로 바꿔주기만 하면 된다.
- sorted()로 내림차순으로 정렬한다.
- Array<Character>로 정렬된 배열을 다시 문자열로 변환한다.
📌 코드 1 - 아스키 값으로 변환하기
func solution(_ s:String) -> String {
// 빈 배열과 빈 결괏값 할당
var array: [UInt8] = []
var result = ""
// 입력값의 각 문자를 아스키 값으로 변환하여 배열에 추가
for c in s {
array.append(c.asciiValue!)
}
// 배열을 내림차순으로 정렬
array = array.sorted(by: >)
// 배열의 아스키 값을 문자열로 변환하여 결괏값에 연결
for ascii in array {
result += String(UnicodeScalar(ascii))
}
// 결괏값 반환
return result
}
📌 코드 2 - sorted() 메서드 이용하기
func solution(_ s:String) -> String {
return String(s.sorted(by: >))
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (Swift) 이진 변환 반복하기 - Lv.2 (0) | 2023.04.28 |
---|---|
[프로그래머스] (Swift) JadenCase 문자열 만들기 - Lv.2 (0) | 2023.04.25 |
[프로그래머스] (Swift) 제일 작은 수 제거하기 - Lv.1 (0) | 2023.04.18 |
프로그래머스) signal: illegal instruction (core dumped) 원인과 해결 (Swift 오류) (0) | 2023.04.14 |
[프로그래머스] (Swift) 정수 제곱근 판별 - Lv.1 (0) | 2023.04.03 |
댓글