-
풍선 터트리기 (with Kotlin)Programmers Practice/level 3 2025. 6. 26. 15:39
https://school.programmers.co.kr/learn/courses/30/lessons/68646
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
배열을 선언하는 부분과 초기화하는 부분을 묶어서 처리하여 가독성을 올린다. 배열 사이즈가 알고리즘을 처리하기에는 작은 경우에는 also를 통해서 조건을 걸어 조기 종료한다.
import kotlin.math.min import kotlin.math.max var answer: Int = 0 class Solution { fun solution(a: IntArray): Int { val n = a.size.also { if (it <= 2) return it } val left = IntArray(n) { 0 }.apply { this[0] = a[0] for (i in 1 until n) { this[i] = min(get(i - 1), a[i]) } } val right = IntArray(n) { 0 }.apply { this[n - 1] = a[n - 1] for (i in n - 2 downTo 0) { this[i] = min(get(i + 1), a[i]) } } answer += 2 for (i in 1 until n - 1) { val (l, r) = left[i - 1] to right[i + 1] when { a[i] < max(l, r) -> answer++ } } return answer } }
'Programmers Practice > level 3' 카테고리의 다른 글
사라지는 발판 (with Kotlin) (0) 2025.07.03 선입 선출 스케줄링 (with Kotlin) (0) 2025.07.01 자물쇠와 열쇠 (with Kotlin) (1) 2025.06.26 홀짝트리 (with Kotlin) (0) 2025.06.24 봉인된 주문 (with Kotlin) (0) 2025.06.24