Post
1208. [S/W 문제해결 기본] 1일차 - Flatten (SWEA) | Gihun Son

1208. [S/W 문제해결 기본] 1일차 - Flatten (SWEA)

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

출처:

SW Expert Academy

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
T = 10
for test_case in range(1, 11):
    D=int(input())
    b_list=list(map(int,input().strip().split()))
    for _ in range(D):
        max_b=max(b_list)
        min_b=min(b_list)
        if max_b-min_b==1 or max_b==min_b:
            break
        idx_max_b=b_list.index(max_b)
        idx_min_b=b_list.index(min_b)
        b_list[idx_max_b]-=1
        b_list[idx_min_b]+=1
    max_b=max(b_list)
    min_b=min(b_list)
    ans=max_b-min_b
    print(f'#{test_case} {ans}')
  • 최대 길이가 100이기 때문에 max, min을 사용해도 괜찮을 것이라고 판단했다.
  • 최대값과 최소값을 구하고 최대값에 -1, 최소값에 +1을 횟수 D만큼 수행했다. 이 때 max와 min의 차이가 1 또는 0이라면 아무리 바꿔도 같은 결과가 나오기 때문에 중단시켜주었다.
This post is licensed under CC BY 4.0 by the author.