반응형
백준 11399번 문제입니다. (solved.ac)기준 실버 3 문제입니다.
https://www.acmicpc.net/problem/11399
문제
문제 접근
문제는 복잡해 보이는데 단순 정렬 문제입니다. 입력받은 수들을 정렬한 후 현재 숫자 + 앞에 있는 수들의 합을 모두 더해주면 됩니다.
ex ) 3 1 4 3 2 를 1 2 3 3 4로 정렬 후 1 + (1+2) + (1+2+3) + (1+2+3+3) + (1+2+3+3+4) = 32
내장 정렬함수를 사용하여도 풀 수 있고 저는 선택 정렬을 구현하여 문제를 해결하였습니다.
선택 정렬은 처음부터 끝까지 모든 수를 탐색하고 가장 작은 값을 찾은 후 맨 왼쪽으로 보내는 것을 반복하면 되는 간단한 정렬 알고리즘입니다.
정답 코드
첫 번째 코드는 선택 정렬을 구현하여 문제를 해결하였고 아래에 있는 주석처리된 부분이 내장 함수를 사용하여 문제를 해결한 부분입니다.
// 선택 정렬 사용
fun main() {
var ans = 0
readln().toInt()
val timeList = readln().split(" ").map { it.toInt() }.toIntArray()
// implement bubble sort
for (i in 0 until timeList.size){
var min = timeList[i]
var minIndex = i
for (j in i until timeList.size){
if (timeList[j] < min){
min = timeList[j]
minIndex = j
}
}
val temp = timeList[i]
timeList[i] = min
timeList[minIndex] = temp
}
for (index in 0 until timeList.size) {
for (time in 0..index) {
ans += timeList[time]
}
}
println(ans)
}
// sorted() 사용
//fun main() {
// var ans = 0
//
// readln().toInt()
// val timeList = readln().split(" ").map { it.toInt() }.sorted().toIntArray()
//
// for (index in 0 until timeList.size) {
// for (time in 0..index) {
// ans += timeList[time]
// }
// }
//
// println(ans)
//
//}
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 20291번 파일 정리(Map - MutableMap)[Kotlin - 코틀린] (0) | 2022.05.29 |
---|---|
[백준] 17390번 이건 꼭 풀어야 해!(누적합 - prefix sum)[Kotlin - 코틀린] (0) | 2022.05.23 |
[백준] 17478번 재귀함수가 뭔가요?[Kotlin - 코틀린] (0) | 2022.05.19 |
[백준] 1182 부분수열의 합(브루트 포스 / 완전 탐색)[Kotlin - 코틀린] (0) | 2022.05.18 |
[백준] 18111번 마인크래프트(브루트 포스 / 완전 탐색)[Kotlin - 코틀린] (0) | 2022.05.16 |
최근댓글