Git 코드🔗: https://github.com/juheeya401/codingtest/blob/main/src/day4.kt
🧠 알고리즘 Day 4 - 특정 숫자 제거하고 정렬하기 (Kotlin)
✅ 문제 설명
정수 리스트에서 특정 숫자(target)를 모두 제거한 뒤,
남은 숫자들을 오름차순 정렬해서 반환하는 문제.
⸻
🎯 입력 예시
nums = listOf(3, 4, 1, 1, 2, 3, 4, 5)
target = 1
🎯 출력 예시
[2, 3, 3, 4, 4, 5]
🧪 풀이 1: Kotlin 편의 함수 사용
fun removeAndSort(nums: List<Int>, target: Int): List<Int> {
val removedNums = nums.filter { it != target }
val sortedNums = removedNums.sorted()
return sortedNums
}
🧠 시간 복잡도
• filter → O(n)
• sorted() → O(n log n)
• 전체: O(n log n)
🔨 풀이 2: 편의 함수 없이 직접 구현 (버블 정렬)
fun removeAndSort2(nums: List<Int>, target: Int): List<Int> {
val temp = mutableListOf<Int>()
// O(n): target 제거
for (i in nums) {
if (i != target) {
temp.add(i)
}
}
// O(n²): 버블 정렬
for (i in 0 until temp.size - 1) {
for (j in 0 until temp.size - i - 1) {
if (temp[j] > temp[j + 1]) {
val t = temp[j]
temp[j] = temp[j + 1]
temp[j + 1] = t
}
}
}
return temp
}
🧠 시간 복잡도
• target 제거: O(n)
• 버블 정렬: O(n²)
• 전체: O(n²)
✍️ 느낀 점
이녀석 GPT! 느낀점까지 써주다니 어딜 감히 나를 넘보냐! 😡
시간복잡도는 아직 잘 이해되지 않는다.
이건 수학적 개념과 정렬에 대한 이해가 더 필요한 듯 하다. 언젠가 다시… 하… 하기싫지만 정렬 다시 들여다봐야겠다.
코틀린으로 풀기 쉽지 않다. 기본 함수가 아직 헷갈린다. 뭐 이건 시간이 해결해 줄 듯.
'강의와 책과 스터디' 카테고리의 다른 글
| 책읽고 스케치) 자바 메모리 영역. 런타임 데이터 영역과 OOM. 스택, 힙 등. (0) | 2025.11.02 |
|---|---|
| 강의추천) 모든 개발자를 위한 HTTP 웹 기본 지식. 출근할 때 듣기 좋은 강의 (0) | 2025.09.14 |
| 책) 개발자 오늘도 마음 튼튼하게 성장하기(ing) (4) | 2025.07.12 |
| 강의) EKS. AWS EKS 서비스 설명 (0) | 2024.06.26 |
| 강의) CloudNet@와 함께하는 Amazon EKS 기본 강의. 사전지식 (0) | 2024.06.24 |