코딩테스트
[프로그래머스] 빈 배열에 추가, 삭제하기
liz_devel
2025. 1. 24. 12:26
🗒 문제
📝 나의 문제풀이
class Solution {
fun solution(arr: IntArray, flag: BooleanArray): IntArray {
val list = mutableListOf<Int>()
arr.mapIndexed { i,v -> if(flag[i]){repeat(v*2){list.add(v)}
}else{
repeat(v){
list.removeAt(list.size-1)}
}
}
return list.toIntArray()
}
}
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
import java.util.*
class Solution {
fun solution(arr: IntArray, flag: BooleanArray): Stack<Int> {
val stack = Stack<Int>()
for (i in arr.indices) {
for (j in 0 until arr[i] * if (flag[i]) 2 else 1) {
if (flag[i]) stack.push(arr[i]) else stack.pop()
}
}
return stack
}
}
🖊 문제 풀이 시 알면 좋을 것
mapIndexed와 반복문 비교
- mapIndexed: 배열의 인덱스와 값을 동시에 처리할 때 유용.
- 반복문(for): 코드를 더 명확하고 효율적으로 작성할 수 있음.
val numbers = listOf(10, 20, 30)
// 인덱스와 값을 조합하여 변환
val result = numbers.mapIndexed { index, value ->
"Index $index: $value"
}
println(result) // [Index 0: 10, Index 1: 20, Index 2: 30]
repeat 함수
- 특정 동작을 정해진 횟수만큼 반복 실행.
repeat(3) { println("Hello!") } // "Hello!"가 3번 출력
스택(Stack)의 특징
- LIFO(Last-In-First-Out) 구조:
- 마지막으로 추가한 요소를 가장 먼저 제거.
- 주요 메서드:
- push: 스택에 요소 추가.
- pop: 스택의 마지막 요소 제거 및 반환.
MutableList와 Stack 비교
- MutableList:
- 일반적인 리스트처럼 사용.
- add, removeAt, isEmpty 등 다양한 메서드 제공.
- Stack:
- 전통적인 스택 구조로 동작하며, 요소 추가/제거에 특화.
스택과 리스트 선택
- 문제의 요구 사항에 따라 선택:
- MutableList: 요소 추가/제거를 자유롭게 할 때.
- Stack: LIFO 구조를 명확히 드러내야 할 때.
반응형