https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh
평평하게 만들기 전에 제일 먼저 알아야 할 것은
어디가 최댓값이고 어디가 최솟값인지이다.
따라서 for문으로 돌면서 최댓값이랑 최솟값을 찾아준다.
for tc in range(1, 11):
dump_times = int(input())
a = list(map(int, input().split()))
for times in range(dump_times):
MAX = 0
MIN = 101
for i in range(len(a)):
if a[i]>MAX:
MAX = a[i]
if a[i]<MIN:
MIN = a[i]
for문을 다 돈 후에, MAX에서 1을 빼고 MIN에서 1을 더한다.
for j in range(len(a)):
if a[j]==MAX:
a[j]-=1
break
for j in range(len(a)):
if a[j]==MIN:
a[j]+=1
break
이걸 한 후에 for문을 다시 돈다
제일 직관적으로 이해하기 쉽게 풀다보니 효율은 떨어지는 것 같다...
전체 코드)
for tc in range(1, 11):
dump_times = int(input())
a = list(map(int, input().split()))
for times in range(dump_times):
MAX = 0
MIN = 101
for i in range(len(a)):
if a[i]>MAX:
MAX = a[i]
if a[i]<MIN:
MIN = a[i]
for j in range(len(a)):
if a[j]==MAX:
a[j]-=1
break
for j in range(len(a)):
if a[j]==MIN:
a[j]+=1
break
print(f'#{tc} {max(a)-min(a)}')
'파이썬 알고리즘' 카테고리의 다른 글
재귀로 순열 풀어보기 (0) | 2022.10.31 |
---|---|
재귀함수로 누적합 구하기 (0) | 2022.10.31 |
[파이썬] SWEA 4408 자기 방으로 돌아가기 (0) | 2022.10.31 |
[파이썬] SWEA 11671 기지국 (0) | 2022.10.31 |
[파이썬] 백준 1475번 방 번호 (0) | 2022.10.31 |