2023-08-07

Owler·2023년 8월 7일
0
post-thumbnail

코틀린 중복된 문자열 제거

세상은 넓고 천재는 많고 저같은 둔재는 따라가기 힘들고 머리가 좋으면 몸이 편한데 몸도 불편하고 머리까지 아픈 상황 :)

나의 풀이

class Solution {
    fun solution(my_string: String): String {
        val grouped = my_string.groupBy{it}
        val answer = StringBuilder()
        
        for((char,new) in grouped){
            answer.append(char)
        }
       
        return answer.toString()
    }
}

1.먼저 주어진 문자열을 groupBy 함수로 문자(char)를 그룹화여 맵으로 생성하기
2. 반환되는 answer 문자열 정의
3. 반복문으로 각 그룹의 첫번째 문자를 append함수로 answer 문자열에 추가하기

나름 간단하게 정리했다고 생각하지만 현실은 너무 달랐다.

다른사람의 풀이

class Solution {
    fun solution(my_string: String): String = my_string.toList().distinct().joinToString("")
}

너무나 간단해서 매번 놀라는 천재들의 풀이법 ㅠ

  1. 주어진 문자열을 바로 toList() 함수를 사용하여 문자의 리스트로 변환
  2. distinct() 함수를 사용하여 중복된 문자 제거 (본것 같은데 당장 기억이 안난 ㅠ)
  3. joinToString("") 함수 사용하여 새로 생긴 리스트의 요소들을 빈 문자열("")에 연결해서 새로운 문자열 바로 생성해버리기...

느낀점

너무나 간결하다 알아본 바로는 다른 사람의 풀이는 단한가지 단점이 존재한다. 문자열을 리스트로 변환하고 다시 문자열로 변경하는 과정이 불필요하게 중복될 수 있다는 점이다. 이는 변환 작업 자체가 프로그램에 영향을 끼치지 않는다면 문제가 없지만 문자열의 길이가 무척 길어질 경우에는 성능에 영향을 줄 수 있다고 한다.

하지만.. 그런것 보단 매번 느끼고 오늘 또 느끼는 것이지만 아는것이 힘이다..!
더 많은 문제들을 접하고 해결하면서 쓸수있는 기능의 폭을 넓혀가보자

profile
junior_developer

0개의 댓글