import sys
sys.stdin = open('input.txt')
# min max index 함수 쓴 버전
# 10개의 테스트 케이스
for idx in range(1, 11):
# 덤프 횟수
n = int(input())
# 각 상자의 높이 값
boxes_height = list(map(int, input().split()))
# 평탄화 작업
for i in range(n):
# 가장 높은 상자, 가장 낮은 상자 찾기
h_idx = boxes_height.index(max(boxes_height))
l_idx = boxes_height.index(min(boxes_height))
# 박스 옮기기
boxes_height[h_idx] -= 1
boxes_height[l_idx] += 1
# final 가장 높은 상자, 가장 낮은 상자 찾기
highest = max(boxes_height)
lowest = min(boxes_height)
print('#{} {}'.format(idx, highest-lowest))
* min, max 함수 안쓴 코드
import sys
sys.stdin = open('input.txt')
# min max 함수 안쓴 버전
# 가장 높은 상자, 가장 낮은 상자 찾아주는 함수
def find_min_max(boxes_height):
# 가장 높거나 가장 낮은 박스 길이와 해당 인덱스 초기화
highest = lowest = boxes_height[0]
h_idx = l_idx = 0
# 박스 전체를 돌면서 비교
for h in range(len(boxes_height)):
# 가장 높은 상자 찾기
if boxes_height[h] > highest:
highest = boxes_height[h]
h_idx = h
# 가장 낮은 상자 찾기
if boxes_height[h] < lowest:
lowest = boxes_height[h]
l_idx = h
# 가장 높은 상자, 낮은 상자 인덱스 반환
return h_idx, l_idx
# 10개의 테스트 케이스
for idx in range(1, 11):
# 덤프 횟수
n = int(input())
# 각 상자의 높이 값
boxes_height = list(map(int, input().split()))
# 평탄화 작업
for i in range(n):
# 가장 높은 상자, 가장 낮은 상자 찾기
h_idx, l_idx = find_min_max(boxes_height)
# 박스 옮기기
boxes_height[h_idx] -= 1
boxes_height[l_idx] += 1
# final 가장 높은 상자, 가장 낮은 상자 찾기
f_h_idx, f_l_idx = find_min_max(boxes_height)
print('#{} {}'.format(idx, boxes_height[f_h_idx] - boxes_height[f_l_idx]))
# min max 함수 안쓴 버전
# 가장 높은 상자, 가장 낮은 상자 찾아주는 함수
def find_min_max(boxes_height):
# 가장 높거나 가장 낮은 [박스 길이, 해당 인덱스] 초기화
highest = [boxes_height[0], 0]
lowest = [boxes_height[0], 0]
# 박스 전체를 돌면서 비교
for h in range(len(boxes_height)):
# 가장 높은 상자 찾기
if boxes_height[h] > highest[0]:
highest[0] = boxes_height[h]
highest[1] = h
# 가장 낮은 상자 찾기
if boxes_height[h] < lowest[0]:
lowest[0] = boxes_height[h]
lowest[1] = h
# 가장 높은 상자, 낮은 상자 인덱스 반환
return highest, lowest
# 10개의 테스트 케이스
for idx in range(1, 11):
# 덤프 횟수
n = int(input())
# 각 상자의 높이 값
boxes_height = list(map(int, input().split()))
# 평탄화 작업
for i in range(n):
# 가장 높은 상자, 가장 낮은 상자 찾기
h_box, l_box = find_min_max(boxes_height)
# 박스 옮기기
boxes_height[h_box[1]] -= 1
boxes_height[l_box[1]] += 1
# final 가장 높은 상자, 가장 낮은 상자 찾기
f_h_box, f_l_box = find_min_max(boxes_height)
print('#{} {}'.format(idx, f_h_box[0] - f_l_box[0]))
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[Python] 1954. 달팽이 숫자 (0) | 2021.08.11 |
---|---|
[Python] 1209. sum (0) | 2021.08.11 |
[Python] 4831. 전기버스 (0) | 2021.08.10 |
[Python] 4835. 구간합 (0) | 2021.08.10 |
[Python] 4834. 숫자 카드 (0) | 2021.08.10 |