-
110 옮기기 (with Kotlin)Programmers Practice/level 3 2025. 7. 9. 04:30
https://school.programmers.co.kr/learn/courses/30/lessons/77886
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
fold를 통해서 스택을 채울 수 있다. 그리고 Pair를 이용해서 굳이 가변 변수를 사용하지 않고 값을 얻어낼 수 있다. buildString으로 새로운 스트링을 생성할 때 더 빠른 속도로 자바가 처리할 수 있다.
class Solution { fun solution(s: Array<String>): Array<String> { return s.map { str -> val (stack, count) = str.fold(ArrayDeque<Char>() to 0) { (stack, count), char -> if (stack.size >= 2) { val firstLast = stack.removeLast() val secondLast = stack.removeLast() if (secondLast == '1' && firstLast == '1' && char == '0') { return@fold stack to count + 1 } else { stack.addLast(secondLast) stack.addLast(firstLast) } } stack.addLast(char) return@fold stack to count } val remaining = stack.joinToString("") val insertPos = remaining.lastIndexOf('0') + 1 val prefix = remaining.substring(0, insertPos) val suffix = remaining.substring(insertPos) buildString { append(prefix) repeat(count) { append("110") } append(suffix) } }.toTypedArray() } }'Programmers Practice > level 3' 카테고리의 다른 글
코딩 테스트 공부 (with Kotlin) (1) 2025.07.11 상담원 인원 (with Kotlin) (3) 2025.07.09 기둥과 보 설치하기 (with Kotlin) (0) 2025.07.03 사라지는 발판 (with Kotlin) (0) 2025.07.03 선입 선출 스케줄링 (with Kotlin) (0) 2025.07.01