🗒 문제
📝 나의 문제풀이
class Solution {
fun solution(arr: IntArray, queries: Array<IntArray>): IntArray {
queries.map{ (a,b) ->
for(i in a..b){
arr[i] += 1
}
}
return arr
}
}
📝 다른 사람의 문제 풀이
class Solution {
fun solution(arr: IntArray, queries: Array<IntArray>): IntArray {
var answer: IntArray = intArrayOf()
queries.forEach { (s, e) ->
(s..e).forEach { arr[it]+= 1 }
}
return arr
}
}
🖊 문제 풀이 시 알면 좋을 것
forEach
- 역할: 컬렉션의 각 원소에 대해 반복 작업을 수행하며, 반환값 없이 단순히 작업만 수행.
- 구조:
collection.forEach { element ->
// 작업 수행
}
- 특징:
- 반환값이 필요 없는 작업에 적합.
- 람다를 사용해 간결한 코드를 작성 가능.
- 예제:
val numbers = listOf(1, 2, 3)
numbers.forEach { println(it * 2) }
// 출력: 2, 4, 6
(s..e) (Range Operator)
- 역할: s부터 e까지의 범위를 생성.
- 구조:
val range = s..e
- 특징:
- 범위를 표현하며, for 루프나 반복 메서드에서 사용 가능.
- s와 e를 포함하는 닫힌 범위(closed range).
* 닫힌 범위 (Closed Range)란 범위의 시작값과 끝값을 모두 포함하는 범위를 의미합니다. - step을 사용해 간격 조정 가능.
- 예제:
for (i in 1..5) {
println(i) // 출력: 1, 2, 3, 4, 5
}
📌 마치며
map (나의 문제풀이에서 사용)
- 컬렉션의 각 원소에 대해 변환 작업을 수행하고, 변환된 값을 모아 새로운 리스트를 반환.
- 특징:
- 기존 컬렉션을 변환만 할 때 적합.
- 반환값이 필요하지 않은 작업에서는 적합하지 않음.
val numbers = listOf(1, 2, 3)
val result = numbers.map { it * 2 }
println(result) // [2, 4, 6]
나의 문제풀이에서의 문제점:
- map은 변환된 값을 새로운 리스트로 반환하지만, 반환값이 사용되지 않아 불필요한 작업이 되었다
- 배열(arr)을 직접 수정할 때는 map 대신 다른 메서드가 적합하다
forEach (다른 사람의 문제풀이에서 사용)
- 컬렉션의 각 원소에 대해 작업을 수행하며, 반환값 없이 단순한 반복 작업을 수행.
- 특징:
- 반환값이 필요하지 않은 작업에 적합.
- 컬렉션 원소를 수정하거나 다른 작업을 수행할 때 유용.
val numbers = listOf(1, 2, 3)
numbers.forEach { println(it * 2) }
// 출력: 2, 4, 6
다른 사람 문제풀이에서의 장점:
- 배열(arr)을 직접 수정하려는 목적에 적합.
- 반환값 없이 작업만 수행하므로 더 간결하고 효율적.
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 조건에 맞게 수열 변환하기 2 (0) | 2025.01.19 |
---|---|
[프로그래머스] 조건에 맞게 수열 변환하기 1 (0) | 2025.01.19 |
[프로그래머스] n보다 커질 때까지 더하기 (0) | 2025.01.17 |
[프로그래머스] 할 일 목록 (0) | 2025.01.17 |
[프로그래머스] 5명씩 (0) | 2025.01.17 |