세상은 넓고 천재는 많고 저같은 둔재는 따라가기 힘들고 머리가 좋으면 몸이 편한데 몸도 불편하고 머리까지 아픈 상황 :)
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("")
}
너무나 간단해서 매번 놀라는 천재들의 풀이법 ㅠ
- 주어진 문자열을 바로 toList() 함수를 사용하여 문자의 리스트로 변환
- distinct() 함수를 사용하여 중복된 문자 제거 (본것 같은데 당장 기억이 안난 ㅠ)
- joinToString("") 함수 사용하여 새로 생긴 리스트의 요소들을 빈 문자열("")에 연결해서 새로운 문자열 바로 생성해버리기...
너무나 간결하다 알아본 바로는 다른 사람의 풀이는 단한가지 단점이 존재한다. 문자열을 리스트로 변환하고 다시 문자열로 변경하는 과정이 불필요하게 중복될 수 있다는 점이다. 이는 변환 작업 자체가 프로그램에 영향을 끼치지 않는다면 문제가 없지만 문자열의 길이가 무척 길어질 경우에는 성능에 영향을 줄 수 있다고 한다.
하지만.. 그런것 보단 매번 느끼고 오늘 또 느끼는 것이지만 아는것이 힘이다..!
더 많은 문제들을 접하고 해결하면서 쓸수있는 기능의 폭을 넓혀가보자