Gaegul's devlog
[SWEA] 1208. Flatten 본문
728x90
반응형
SW Expert Academy [S/W 문제해결 기본] 시리즈
1208. Flatten
[문제]
가장 높은 곳에 있는 상자를 가장 낮은 곳으로 옮기는 작업을 덤프라고 정의한다. 평탄화 작업을 위해서 상자를 옮기는 작업 횟수에 제한이 걸려있을 때, 제한된 횟수만큼 옮기는 작업을 한 후 최고점과 최저점의 차이를 반환하는 프로그램을 작성하시오.
A’부분의 상자를 옮겨서, C부분에 덤프하였다. 이때 C 대신 C’부분에 덤프해도 무방하다.
2회의 덤프 후, 최고점과 최저점의 차이는 8 – 2 = 6 이 되었다 (최초덤프 이전에는 9 – 1 = 8 이었다).
덤프 횟수가 2회로 제한된다면, 이 예시 문제의 정답은 6이 된다.
[제약 사항]
가로 길이는 항상 100으로 주어진다.
모든 위치에서 상자의 높이는 1이상 100이하로 주어진다.
덤프 횟수는 1이상 1000이하로 주어진다.
주어진 덤프 횟수 이내에 평탄화가 완료되면 더 이상 덤프를 수행할 수 없으므로 그 때의 최고점과 최저점의 높이 차를 반환한다 (주어진 data에 따라 0 또는 1이 된다).
[입력]
총 10개의 테스트 케이스가 주어지며, 각 테스트 케이스의 첫 번째 줄에는 덤프 횟수가 주어진다. 그리고 다음 줄에 각 상자의 높이값이 주어진다.
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 최고점과 최저점의 높이 차를 출력한다.
[CODE]
#1208. Flatten
for i in range(1,11): # 테스트 케이스 10번
dump = int(input()) # 덤프 횟수 (1 ~ 1000이하) #2번
box = list(map(int, input().split())) # 0~100까지
cnt = 0
for _ in range(dump):
box = sorted(box) #오름차순 정렬 (0번 인덱스 : 최소값, n번 인덱스 : 최댓값)
box[-1] = box[-1]-1
box[0] = box[0]+1
diff = max(box) - min(box)
print("#{0} {1}".format(i, diff))
⭐️ Solution
1. Sorted를 이용해서 리스트 요소들 올림 차순으로 정렬.
2. 리스트 0번째 인덱스 요소와 마지막 요소는 최소값과 최댓값으로 정렬되어 있을 것임. 두 요소 값만 변경해줌
3. 최종적으로 가장 큰 요소 값과 가장 작은 요소 값의 차이 구해줌.
728x90
반응형
'Algorithm > Algorithm 풀이' 카테고리의 다른 글
[SWEA] 1213. String (0) | 2021.08.21 |
---|---|
[SWEA] 1210. Ladder1 (0) | 2021.08.21 |
[SWEA] 1209. Sum (0) | 2021.08.21 |
[SWEA] 1206. View (0) | 2021.08.11 |
[SWEA] 1204. 최빈수 구하기 (0) | 2021.08.11 |
Comments