Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- foreach
- Kotlin
- Main
- dynamic programming
- PriorityQueue
- report
- 코틀린
- 프로그래머스
- intarray
- solution
- 2020
- booleanarray
- Poll
- Queue
- sortedBy
- 2D Array
- Developer
- heap
- Recursion
- programmers
- hackerrank
- Java
- 동적계획법
- indices
- dp
- lastIndex
- GREEDY
- 알고리즘
- contentToString
- Util
Archives
- Today
- Total
Code in
프로그래머스 탐욕법(Greedy) 큰 수 만들기 with Kotlin, 테스트 케이스 추가 본문
프로그래머스 탐욕법(Greedy) 큰 수 만들기 문제입니다.
IntelliJ에서의 풀이입니다.
var k: Int = 4
val number: String = "4177252841"
fun solution(number: String, k: Int): String {
val str: StringBuilder = StringBuilder(number)
// String에 비해서 시간이 대략 1/6으로 감소.
var i = 0
var kk = k // k는 val이라서 var로 다시 저장. OOP를 위한 것?
var len = str.length - 1
while (i < len) {
while (str[i] === '9') i++ // 비교 횟수를 줄이기 위함
when {
str[i] >= str[i + 1] -> i++ // Pass
else -> str.deleteCharAt(i).takeIf { kk == 1 }?.apply { return str.toString() }.also {
kk--
len--
i=0
}
}
}
return str.dropLast(kk).toString()
}
fun main() {
print(solution(number, k)) // 775841
}
URL: https://programmers.co.kr/learn/courses/30/lessons/42883
테스트 케이스 Test Case 추가합니다!
출처: https://hsin.hr/coci/archive/2011_2012/
위의 링크에서 contest4, keks폴더입니다.
in | out | |
67429495152 | 3 | 79495152 |
92885706616349 3066555730841879 |
7 | 98876693066555730841879 |
661742328215729068402 560788309769925990525 047074416512870613144 839550218540731094196 6307933122347117 |
61 | 999999955285407310941966307933122347117 |
'알고리즘 스터디_문제풀이' 카테고리의 다른 글
프로그래머스 탐욕법(Greedy) 섬 연결하기 with Kotlin (2) | 2020.08.18 |
---|---|
프로그래머스 탐욕법(Greedy) 조이스틱 with Kotlin (1) | 2020.08.17 |
프로그래머스 탐욕법(Greedy) 체육복 with Kotlin (0) | 2020.08.15 |
프로그래머스 완전탐색 카펫 with Kotlin (1) | 2020.08.14 |
프로그래머스 완전탐색 소수 찾기 with Kotlin (1) | 2020.08.14 |
Comments