수 정렬하기
내가 작성한 코드
def find(num, arr):
if len(arr) == 0:
return 0
for i in range(len(arr)):
if arr[i] > num:
return i
return len(arr)
N = int(input())
arr = []
for i in range(N):
num = int(input())
j = find(num, arr)
arr.insert(j, num)
for i in arr:
print(i)
문제를 풀며 생각한 것
- find()함수의 return 조건을
arr[i] < num
으로 하기위해선 맨 뒤에 값부터 비교했어야 했다.
-> 맨 앞에서 부터 비교하기 위해 조건을 바꾸어 주었다.
- 일반적인 버블 정렬의 경우 배열 내에 앴는 값을 순차적으로 비교하며 정렬을 하지만, 이번 문제의 경우 배열을 구성하며
)
- arr[i] > num을 만족하지 않는 경우는 num이 배열에 들어있는 모든 수보다 큰 경우이다. 이때에는 arr의 마지막 인덱스 + 1의 값이 될 수 있는 len을 리턴해주었다.
결과