Some people are standing in a row in a park. There are trees between them which cannot be moved. Your task is to rearrange the people by their heights in a non-descending order without moving the trees. People can be very tall!
for i in range(len(a)): if a[i] == -1: IdxSet_minus1.append(i)
b = sorted(a) for i in range(len(IdxSet_minus1)): b.pop(0)
for i in range(len(a)): if cnt_minus1 < len(IdxSet_minus1): if i == IdxSet_minus1[cnt_minus1]: sort_a.append(-1) cnt_minus1 += 1 else: sort_a.append(b[cnt_sort]) cnt_sort += 1 else: sort_a.append(b[cnt_sort]) cnt_sort += 1
# 테스트 케이스 a = [-1, 150, 190, 170, -1, -1, 160, 180]
# -1인 인덱스를 저장할 공간 IdxSet_minus1 = []
# 새롭게 정렬한 값을 넣어줄 공간 sort_a = []
# 두 가지의 행렬을 비교해서 값을 넣을 것이기 때문에, 각 값의 인덱스 cnt_minus1 = 0 cnt_sort = 0
# '-1' 이 들어있는 위치의 인덱스를 모으기 for i in range(len(a)): if a[i] == -1: IdxSet_minus1.append(i)
# 주어진 케이스를 오름차순으로 정렬 b = sorted(a)
# 정렬한 케이스에서 -1 값 빼내기 for i in range(len(IdxSet_minus1)): b.pop(0)
# 배열의 전체 길이만큼 반복 for i in range(len(a)): # 만약, 넣어야하는 -1 이 남아있는 경우 if cnt_minus1 < len(IdxSet_minus1): # 찾아둔 -1 의 인덱스 값인 경우 if i == IdxSet_minus1[cnt_minus1]: sort_a.append(-1) cnt_minus1 += 1 # 찾아둔 -1 의 인덱스 값이 아닌 경우 else: sort_a.append(b[cnt_sort]) cnt_sort += 1 # -1 이 더이상 없는 경우 else: sort_a.append(b[cnt_sort]) cnt_sort += 1