정렬
list를 오름,내림 차순으로 정렬 하기 위해서는 여러가지 정렬 알고리즘이(버블 정렬,삽입 정렬 등) 있지만
간단히 파이썬 내장 함수를 정리하고자 한다.
오름차순
파이썬 내장 함수 sort(),sorted() 를 이용하여 간단하게 사용가능 하다.
sort() 는 직접 그 리스트를 정렬한다. 꼭 int형이 아니더라도 정렬이 가능 하다.
sorted()는 역활은 같지만 정렬된 리스트를 다른 저장 공간에 저장 한다.
x = [1,4,5,2,3]
y = sorted(x)
print(y) #[1, 2, 3, 4, 5]
print(x) #[1, 4, 5, 2, 3]
y= x.sort()
print(y) #None
print(x) #[1, 2, 3, 4, 5]
x = ['1','4','5','2','3']
y = sorted(x)
print(y) #['1', '2', '3', '4', '5']
print(x) #['1', '4', '5', '2', '3']
y= x.sort()
print(x) #['1', '2', '3', '4', '5']
p = ['b','q','a','o','x','c']
q = sorted(p)
print(q) # ['a', 'b', 'c', 'o', 'q', 'x']
print(p) # ['b', 'q', 'a', 'o', 'x', 'c']
p.sort()
print(p) #['a', 'b', 'c', 'o', 'q', 'x']
내림차순
list를 내림차순으로 바꾸기 위해서는 reverse란 매개변수를 사용하면 된다.
x = [1,4,5,2,3]
y = sorted(x,reverse = True)
print(y) #[5, 4, 3, 2, 1]
print(x) #[1, 4, 5, 2, 3]
x.sort(reverse=True)
print(x) #[5, 4, 3, 2, 1]
리스트 요소 뒤집기
위에서 본 오름,내림 차순 정렬이 아닌 단순히 list의 요소를 뒤집는 방법을 정리하고자 한다.
슬라이싱
슬라이싱은 맨 앞쪽부터 start index : end index : step 이다.
따라서 step 에 음수가 들어가면 역순으로 슬라이싱 하여 출력이 된다.
x = [5,4,8,9,6]
y = x[::-1] #x[start index : end index : step]
print(y) #[6, 9, 8, 4, 5]
y = x[::-2] #[6, 8, 5]
y = x[::2] #[[5, 8, 6]
reverse(), reversed()
reverse() 함수는 sort()와 같이 리스트 자체를 역순으로 만들어 버린다.
reversed()는 sorted()와는 다르게 iterator type으로 출력이 나오게 된다.
따라서 list()로 묶어주거나 for문에서 사용 가능하다.
x = [5,4,8,9,6]
y = reversed(x)
print(y) #<list_reverseiterator object at 0x7fa00636c650>
print(list(y)) #[6, 9, 8, 4, 5]
y = x.reverse()
print(y) #None
print(x) #[6, 9, 8, 4, 5]
프로그래머스 문제 - Lv1 자연수 뒤집어 배열로 만들기
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.
예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다
input : 12345
output : [5,4,3,2,1]
def solution(n):
answer = []
for i in str(n):
answer.append(int(i))
answer = answer[::-1]
return answer
처음엔 이렇게 슬라이싱을 사용하여 배열을 뒤집어 문제를 풀었다.
슬라이싱을 한번 더 거치지 않고 풀 수 있는 함수를 찾아보다가
range()의 반대 함수도 있을꺼 같아 더 찾아 보다가 reversed() 함수를 찾아보게 되었다.
def solution(n):
answer = []
for i in reversed(str(n)):
answer.append(int(i))
return answer
iterater type은 reversed를 사용하면 요소 순서를 뒤집어서 빼낼 수 있는거 같다.
'알고리즘' 카테고리의 다른 글
Fibonacci numbers(피보나치 수) (0) | 2022.10.09 |
---|---|
요소 개수 찾기 count() , Counter (1) | 2022.10.07 |
프로그래머스 - Lv1. 두 정수 사이의 합 (0) | 2022.10.03 |
프로그래머스 - Lv1. 정수 제곱근 판별 (0) | 2022.10.03 |
진수 변환 (0) | 2022.03.15 |