#2751
python에서 insertion, merge sort 등을 직접 구현하지 않고 sort()와, sorted를 써도 된다. (time complexity 괜찮아보임)
array= [1,2,5,1,3]
print(sorted(array))
array.sort()
print(array)
#1181
리스트 내 중복 원소 제거 시 나는 다음과 같은 코드를 짰는데 (제거도 아니고 출력만 안하는 코드)
stack= []
print(new_array[0])
for i in range(len(new_array)):
if stack and stack[-1] != new_array[i]:
stack.pop
print(new_array[i])
stack.append(new_array[i])
i=i+1
다음 과 같이 쉽게 가능하다.
lst = ['ab','bddad','adsf','adbd','ab']
lst = list(set(lst))
set은 밑에와 같이 중복을 허용하지 않는 data type임으로 set으로 만들어 중복을 없애고 다시 리스트화 해준다.
a= {1,2,3,3}
print(a) #{1,2,3}
중복이 없어진 정렬된 리스트를 원한다면 항상 set로 만들고 다시 리스트로 만든 후 sorting을 해야한다.
sorted(list(set(array))) #맞음
list(set(sorted(array))) #틀림. sort를 하고 set을 하면 set에서 정렬된 순서가 보장되지 않음.
또한, 각 원소의 문자열 길이로 sorting 시 나는 다음과 같은 코드를 짯는데
s=0
e=0
boolean=0
temp=0
for i in range(51):
for j in array:
if len(j) == i :
new_array.append(j)
temp=temp+1
boolean=1
e= e+temp
mergeSort(new_array,s,e)
if boolean == 1 :
s=s+temp
boolean=0
temp=0
다음과 같이 sort(key=len)으로 쉽게 가능하다.
lst.sort()
lst.sort(key=len)