🗒 문제
📝 나의 문제풀이
class Solution {
fun solution(todo_list: Array<String>, finished: BooleanArray): Array<String> {
return todo_list.toList().zip(finished.toList()) // 두 배열을 쌍으로 묶음
.filter { (_, b) -> !b } // 완료되지 않은 항목만 필터링
.map { (a, _) -> a } // 작업 이름만 추출
.toTypedArray() // 결과를 Array로 변환
}
}
📝 다른 사람의 문제 풀이
class Solution {
fun solution(todo_list: Array<String>, finished: BooleanArray): Array<String> {
var answer: Array<String> = arrayOf<String>()
return todo_list.filterIndexed {i, v -> finished[i].not()}.toTypedArray()
}
}
🖊 문제 풀이 시 알면 좋을 것
zip 사용법
- 설명: 두 리스트를 쌍으로 묶어 List<Pair<T, R>> 형태로 반환.
val list1 = listOf("Task1", "Task2")
val list2 = listOf(true, false)
val zipped = list1.zip(list2)
println(zipped) // [(Task1, true), (Task2, false)]
filter와 filterIndexed
- filter: 조건을 만족하는 요소를 필터링.
val tasks = listOf("Task1", "Task2", "Task3")
val finished = listOf(false, true, false)
val unfinishedTasks = tasks.zip(finished).filter { (_, b) -> !b }
println(unfinishedTasks) // [(Task1, false), (Task3, false)]
- filterIndexed: 요소와 인덱스를 기준으로 조건을 필터링.
- 컬렉션의 인덱스와 값을 람다 함수로 전달하여 조건에 맞는 요소만 필터링.
- 람다 매개변수:
- index: 요소의 위치.
- value: 요소의 값.
- 반환값: 조건을 만족하는 요소들로 이루어진 새로운 List<T>.
val list = listOf("a", "b", "c", "d")
val result = list.filterIndexed { index, value -> index % 2 == 0 }
println(result) // 출력: [a, c] (짝수 인덱스)
map 사용법
- 설명: 컬렉션의 요소를 변환하여 새로운 컬렉션 생성.
val zipped = listOf("Task1" to false, "Task2" to true)
val taskNames = zipped.map { (task, _) -> task }
println(taskNames) // [Task1, Task2]
불린값 반전 (not)
- 설명: Boolean 값을 반전.
val isFinished = true
println(isFinished.not()) // false
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 수열과 구간 쿼리 1 (0) | 2025.01.17 |
---|---|
[프로그래머스] n보다 커질 때까지 더하기 (0) | 2025.01.17 |
[프로그래머스] 5명씩 (0) | 2025.01.17 |
[프로그래머스] 홀수 vs 짝수 (0) | 2025.01.17 |
[프로그래머스] n 번째 원소까지 (0) | 2025.01.16 |