본문 바로가기
코딩 테스트/프로그래머스

[프로그래머스] (Swift) 문자열 내림차순으로 배치하기 - Lv.1

by Dev.Andy 2023. 4. 20.

📌 문제

프로그래머스 문제 이미지, 문자열 내림차순으로 배치하기

코딩테스트 연습 - 문자열 내림차순으로 배치하기 | 프로그래머스 스쿨

 

📌 풀이

(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: >))
}

 

댓글