🗒 문제


📝 나의 문제풀이
class Solution {
fun solution(s: String): String {
return s.toList()
.groupingBy{ it }.eachCount()
.filter{ it.value == 1 }
.keys
.sorted()
.joinToString("")
}
}
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
class Solution {
fun solution(s: String) = s.toSet()
.filter { uniqueChar ->
s.count { it == uniqueChar } == 1
}.sorted().joinToString("")
}
🖊 문제 풀이 시 알면 좋을 것
- s.toList()
- 문자열 → 문자 리스트 변환
- 예: "hello" → ['h','e','l','l','o']
- groupingBy { it }
- 그룹화 틀을 만든다
- 문자별로 그룹을 만들어서 나중에 집계 가능
- eachCount()
- 각 그룹의 요소 개수를 Map으로 반환
- 예: ['h','e','l','l','o'] → {h=1, e=1, l=2, o=1}
- filter { it.value == 1 }
- 등장 횟수가 1인 문자만 남김
- 위 예제 → {h=1, e=1, o=1}
- keys
- Map의 키 값만 가져오기
- Set 형태 → ['h','e','o']
- sorted()
- 사전 순으로 정렬
- ['e','h','o']
- joinToString("")
- 리스트 → 문자열
- "eho"
- s.toSet()
- 문자열 → 중복 제거된 문자 집합
- 예: "hello" → ['h','e','l','o'] (l은 한 번만 남김)
- filter { uniqueChar -> s.count { it == uniqueChar } == 1 }
- 각 문자(uniqueChar)가 문자열 전체에서 1번만 등장하는지 확인
- s.count { it == uniqueChar } → 해당 문자의 등장 횟수
- 등장 1회만 남김
toSet()
- 중복 제거용 함수
- 컬렉션이나 문자열에서 같은 요소를 한 번만 남기고 Set으로 변환
- 반환 타입: Set<T> (순서 보장 X)
val s = "hello"
val uniqueChars = s.toSet()
println(uniqueChars) // 출력 예: [h, e, l, o] ('l' 중복 제거)
문자열 "hello" → 문자 'l'이 중복 → Set으로 만들면 한 번만 남음
Set<T>란?
- 중복 없는 컬렉션(Collection)
- 순서를 보장하지 않음 (LinkedHashSet 같은 예외는 있음)
- 리스트(List)와 달리 같은 요소를 여러 번 넣을 수 없음
| 특징 | 설명 |
| 중복 제거 | 같은 값이 여러 번 들어와도 1번만 남음 |
| 순서 보장 X | 넣은 순서와 상관없이 요소를 저장 |
| 컬렉션 함수 지원 | filter, map, count 등 대부분의 컬렉션 함수 사용 가능 |
count { 조건 }
설명
- 컬렉션이나 문자열 순회하면서 조건에 맞는 요소 개수 세기
- 조건이 없으면 전체 요소 개수 반환
예제 1: 조건 없이
val list = listOf(1, 2, 3, 4)
println(list.count()) // 4 → 전체 요소 수
예제 2: 조건과 함께
val s = "hello"
val cntL = s.count { it == 'l' }
println(cntL) // 2 → 'l' 문자가 2번 등장
내부 처리 과정:
- 문자열 순회 → 각 글자가 'l'인지 확인 → 맞으면 카운트 +1 → 최종 반환
반응형
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 진료순서 정하기 (0) | 2025.12.22 |
|---|---|
| [프로그래머스] 숨어있는 숫자의 덧셈 (2) (0) | 2025.12.22 |
| [프로그래머스] 중복된 문자 제거 (0) | 2025.12.22 |
| [프로그래머스] 369게임 (1) | 2025.12.21 |
| [프로그래머스] 외계행성의 나이 (0) | 2025.12.21 |