def solution(num_list):
n = len(num_list)
list_i = []
for j in range(n-1):
for i in range(n-1-j):
num_list[i], num_list[i+1] = num_list[i+1], num_list[i]
return num_list
어제 배웠던 bubble sort가 생각나서 과정을 이렇게 정했다.
1. 돈다.
2. 순서를 바꾼다.
3. 돈다.
def solution(num_list):
n = len(num_list) # range의 범위 설정 준비
for i in range(n):
# i, j = j, i하면 바뀐다고 함.
# (swap이라는 것도 있는데 내부알고리즘이 또 있는 것 같아서 사용하기 좀..)
# 2. 적용
def solution(num_list):
n = len(num_list)
for i in range(n-1): # n 설정 시 IndexError: list index out of range
# list의 index를 range로 돌 때 맨 끝 인덱스 요소가 없음.
num_list[i], num_list[i+1] = num_list[i+1], num_list[i]
return num_list
result = solution([1,2,3,4,5])
print(result)
# [2, 3, 4, 5, 1]
# 3. 돈다
# 첫번째 원소가 마지막까지 가기는 하는데, 이걸 반복해야함.
# 여기가 문제인데
# 하다보니 됐달까...
# 일단 원하는 건
# 0 1 2 3 4 돌고
# 0 1 2 3 돌고
# ...
# 0 도는 건데
# 너무 안 돼서
# 일단 하나만이라도 줄여서 돌려보고 싶었음.
li = [1,2,3,4,5]
n = len(li)
list_i = []
# list_j = []
for i in range(n):
list_i.append(i)
print(list_i)
# [0]
# [0, 1]
# [0, 1, 2]
# [0, 1, 2, 3]
# [0, 1, 2, 3, 4]
# for j in range(i):
# list_j.append(j)
# # print(list_j)
# 위 코드를 보면 list_i의 원소가 하나씩 늘어가는데,
# 비몽사몽하면서 저 늘어가는 걸 반대로 빼버리고 싶다는 생각에 -j해봤음.
어떻게든 돌았다.
(for range에서 for range를 돌 때, 상위 for range의 요소를 하위 for range요소에서빼는 식.)
팀원과 리뷰를 하며 다른 코드를 보았다.
알고보니
slice[::-1]을 하면 됐다.
^^