Algorithm/Simulation

[Python] SWEA 1208번 Flatten

코딩쪼앙 2023. 5. 9. 16:20

문제

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

문제 풀이

  • 최대높이와 최저높이의 인덱스를 찾아 최대 높이의 값을 최저 높이에 옮긴다.
  • 찾은 최대높이 값은 -1, 찾은 최저 높이 값은 +1
  • 위 과정을 움직여야하는 횟수만큼 반복 한 후, 모든 덤프 작업이 끝났을 때의 최댓값과 최솟값을 찾아 그 값의 차이를 출력한다.

코드

# 최저높이 찾기
def find_min_height():
    min_height = 101
    min_idx = 0
    for i in range(len(box)):
        if box[i] < min_height:
            min_height = box[i]
            min_idx = i
    return min_idx

# 최대높이 찾기
def find_max_height():
    max_height = 0
    max_idx = 0
    for i in range(len(box)):
        if box[i] > max_height:
            max_height = box[i]
            max_idx = i
    return max_idx

for tc in range(10):
    move = int(input())
    box = list(map(int,input().split()))
    for i in range(move):
        box[find_max_height()] -= 1
        box[find_min_height()] += 1
    print(f'#{tc + 1}',max(box) - min(box))