티스토리 뷰
728x90
풀이1
T = 10
for tc in range(1, T+1):
N = int(input()) # 덤프횟수
box_lst = list(map(int, input().split()))
# 각 층마다 몇개가 있는지 카운팅
cnt = [0] * 101
for i in box_lst:
cnt[i] += 1
# 항상 상자 높이 1 이상 100 이하니까
min = 101
max = 0
for box in box_lst:
if box < min:
min = box
if box > max:
max = box
# max 높이에서 1개 빼주고 그걸 min 높이에 더해줌 -> 카운팅이 바뀜
# 덤프횟수 만큼 반복문 돌려줌
# 근데 그렇게 하면 min, max 높이가 달라지므로 같이 체크해줌
n = 0
while n < N:
cnt[max] -= 1
cnt[max-1] += 1
cnt[min] -= 1
cnt[min+1] += 1
# max, min 높이인 애들의 개수가 0개면 안되니까 0 아닐 때까지 찾아서 값 체인지
while cnt[max] == 0:
max -= 1
while cnt[min] == 0:
min += 1
n += 1 # while문 빠져나가기 위해서 1씩 더해줌
result = max - min
print("#{} {}".format(tc, result))
풀이2
# 최저 높이의 상자 인덱스 위치 반환
def min_search():
min_value = 101
min_idx = -1
# 최저 높이 찾기
for i in range(len(box_lst)):
if box_lst[i] < min_value:
min_value = box_lst[i]
min_idx = i
return min_idx
# 최고 높이의 상자 인덱스 위치 반환
def max_search():
max_value = 0
max_idx = -1
# 최고 높이 찾기
for i in range(len(box_lst)):
if box_lst[i] > max_value:
max_value = box_lst[i]
max_idx = i
return max_idx
for tc in range(1, 10+1):
N = int(input()) # 덤프횟수
box_lst = list(map(int, input().split()))
# N번 덤프하기
for i in range(N):
# 최고 높이 상자 한칸 내리기
box_lst[max_search()] -= 1
# 최저 높이 상자 한칸 올리기
box_lst[min_search()] += 1
print("#{} {}".format(tc, box_lst[max_search()] - box_lst[min_search()]))
'algorithm > swea' 카테고리의 다른 글
[swea] 4866. 괄호검사 / python 파이썬 (0) | 2021.04.09 |
---|---|
[swea] 1206. View / python 파이썬 (0) | 2021.04.09 |
[swea] 4408. 자기 방으로 돌아가기 / python 파이썬 (0) | 2021.04.09 |
[swea] 4861. 회문 / python 파이썬 (0) | 2021.04.09 |
[swea] 2805. 농작물 수확하기 / python 파이썬 (0) | 2021.04.08 |
댓글
글 보관함
TAG
- 파이썬
- 2018 카카오 공채
- 알고리즘
- 백준
- 삼성기출
- 20056 마법사 상어와 파이어볼
- dp
- merge 에러
- git 미러링
- swea
- 삼성코테
- 17406 배열돌리기4
- dfs
- merge에러
- BFS
- Python
- 영어끝말잇기
- 21609 상어 중학교
- 브루트포스
- 보석쇼핑
- 프로그래머스
- react
- 기지국설치
- 2579 계단오르기
- 20057 마법사 상어와 토네이도
최근에 올라온 글
- Total
- Today
- Yesterday
최근에 달린 댓글