-
봉인된 주문 (with Kotlin)Programmers Practice/level 3 2025. 6. 24. 17:18
https://school.programmers.co.kr/learn/courses/30/lessons/389481
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
fold 메서드를 활용해 금지된 문자열을 고려하며 시작점에서 얼마나 이동해야 하는지를 누적합으로 계산한다.
이렇게 계산된 누적 이동 횟수를 let을 통해 전달받아, 이를 26진수로 변환하는 메서드에 넘겨 최종 정답을 구한다.fun Long.pow(n: Int): Long { var result = 1L repeat(n) { result *= this } return result } class Solution { fun convert26To10(number26: String): Long = number26.reversed() .foldIndexed(0L) { index, acc, char -> acc + 26L.pow(index) * (char - 'a' + 1) } fun convert10To26(number10: Long): String { if (number10 == 0L) return "" val q = (number10 - 1) / 26L val r = (number10 - 1) % 26L return convert10To26(q) + ('a' + r.toInt()) } fun solution(n: Long, bans: Array<String>): String { return bans .map(::convert26To10).sorted() .fold(0) { acc, ban -> when { ban <= n + acc -> acc + 1 else -> acc } } .let { count -> convert10To26(n + count) } } }
'Programmers Practice > level 3' 카테고리의 다른 글
선입 선출 스케줄링 (with Kotlin) (0) 2025.07.01 풍선 터트리기 (with Kotlin) (0) 2025.06.26 자물쇠와 열쇠 (with Kotlin) (1) 2025.06.26 홀짝트리 (with Kotlin) (0) 2025.06.24 2차원 동전 뒤집기 (with Kotlin) (1) 2025.06.24