본문 바로가기
Kotlin(프로그래머스)/Level 1

[프로그래머스/Kotlin] 문자열 내림차순으로 배치하기

by Yuno. 2022. 3. 19.
728x90

문제 링크 -> https://programmers.co.kr/learn/courses/30/lessons/12917

 

코딩테스트 연습 - 문자열 내림차순으로 배치하기

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로

programmers.co.kr

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

제한 사항

  • str은 길이 1 이상인 문자열입니다.

------------------------------------------------------------풀이------------------------------------------------------------------
1. s를 List로 변환해서 내림차순 정렬 후 string()다시 변환한다.
2. 정규표현식을 사용해 해당되지 않는 문자열은 전부 ""으로 치환한다.

//////////////처음 작성한 코드
class Solution {
    fun solution(s: String): String {
            var answer = ""
            
            for(i in s.toList().sortedDescending()) answer+=i
            
            return answer
        }
}


///////////////두 번째로 작성한 코드
class Solution {
    fun solution(s: String): String = Regex("[^A-Z|^a-z]").replace(s.toList().sortedDescending().toString(), "")
}

 

------------------------------------------------------------결과------------------------------------------------------------------

정규식을 모를때 작성한 첫 번째 코드는 정말 정직하게 풀어놨네요..

다만 실행 시간은 첫번째 코드가 평균 10ms정도 빠른릅니다.

첫 번째 코드는 반복문을 s의 사이즈만큼만 돌지만, 정규표현식을 사용한 두번 째 코드는 List를 String으로 변환하면서 생긴 [ ] , 공백만큼 추가적인 시간이 필해서 그런것 같습니다. 

10ms는 미미하지만 시간적인 면에서는 첫 번째가 좀더 나은 코드가 될 수도 있네요 

 

- 문제에 대한 질문 댓글 환영!
- 중간에 잘못된 부분이 있다면 댓글로 남겨주세요. 수정하겠습니다.

728x90

댓글