반응형
문제설명
창고에 상자가 가로방향으로 일렬로 쌓여 있다. 만약 가로의 길이가 7이라면 아래와 같이 되어 있다고 해보자.
1열은 높이가 6으로 6개의 상자가 쌓여 있고, 2열은 3개의 상자, 3열은 9개의 상자가 쌓여 있으며 높이는 9라고 읽는다. 창고 높이 조정은 가장 높은 곳에 있는 사장 1개를 가장 낮은 곳으로 이동하는 것을 말한다. 가장 높은 곳이나 가장 낮은 곳이 여러곳이라면 그 중 아무거나 선택하면 된다. 위에 그림을 1회 높이 조정을 하면 아래와 같아진다.
창고의 가로 길이와 각 열의 상자 높이가 주어진다. m회의 높이 조정을 한 후 가장 높은 곳과 가장 낮은 곳의 차이를 출력하는 프로그램을 작성하라.
입력조건
- 첫째 줄에 창고 가로의 길이긴 자연수 L(1 <= L <= 100)이 주어진다.
- 둘째 줄에 L개의 자연수가 공백을 사이에 두고 입력된다. 각 자연수는 100을 넘지 않는다.
- 셋째 줄에 높이 조정 횟수인 M(1 <= M <= 1,000)이 주어진다.
출력조건
- M회의 높이 조정을 마친 후 가장 높은 곳과 가장 낮은 곳의 차이를 출력해라
사고과정
- 간단한 문제였다. 정렬 후, M번 만큼 가장 마지막 인덱스(-1번 인덱스으)의 값 중 1을 가장 첫번째 인덱스인 0번 인덱스에 있는 원소값에 더해주고 다시 오름차순 정렬을 수행해주면 된다.
풀이
l = int(input())
arr = list(map(int, input().split()))
m = int(input())
arr.sort()
for _ in range(m):
arr[0] += 1
arr[-1] -= 1
arr.sort()
res = arr[-1] - arr[0]
print(res)
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[인프런] 증가수열 만들기 (0) | 2021.11.16 |
---|---|
[인프런] 침몰하는 타이타닉 (0) | 2021.11.16 |
[인프런] 씨름 선수 (0) | 2021.11.16 |
[인프런] 회의실 배정 (0) | 2021.11.15 |
[인프런] 마구간 정하기 (0) | 2021.11.15 |