Lumpy Space Princess - Adventure Time
코딩테스트/파이썬 알고리즘 문제풀이 입문

[파이썬 알고리즘 문제풀이 입문] 이분탐색(결정알고리즘) & 그리디 알고리즘 - 창고 정리

yaebb_82 2023. 5. 10.

*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.

 

 

 

문제

창고에 상자가 가로방향으로 일렬로 쌓여 있습니다. 창고 높이 조정은 가장 높은 곳에 상자를 가장 낮은 곳으로 이동하는 것을 말한다. 가장 높은 곳이나 가장 낮은 곳이 여러 곳이면 그 중 아무거나 선택하면 된다. 창고의 가로 길이와 각 열의 상자 높이가 주어집니다. m회의 높이 조정을 한 후 가장 높은 곳과 가장 낮은 곳의 차이를 출력하는 프로그램을 작성하세요.

 

 

 

풀이

• 내 풀이 (min, max 사용)

import sys
input = sys.stdin.readline

L = int(input())
box = list(map(int, input().split()))
M = int(input())

for i in range(M):
    largest = max(box)
    smallest = min(box)

    box[box.index(largest)] -= 1
    box[box.index(smallest)] += 1

print(max(box)-min(box))

• 내 풀이 (sort 사용) == 답안 (Python)

import sys
input = sys.stdin.readline

L = int(input())
box = list(map(int, input().split()))
M = int(input())
box.sort()

for i in range(M):    
    box[L-1] -= 1
    box[0] += 1
    box.sort()
    
print(box[L-1]-box[0])

 

• 답안 : Kotlin (내가 바꿔본 것 / 정확X)

import java.io.*
import java.util.*

fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))){
    var L = readLine().toInt()
    var box = readLine().split(" ").map { it.toInt() }.toMutableList()
    var M = readLine().toInt()
    box.sort()

    for(i in 0 until M) {
        box[L-1] -= 1
        box[0] += 1    
        box.sort()
    }

    println(box[L-1]-box[0])
}

 

 

 

반응형

댓글