✅ sort()는 리스트를 직접 정렬하며, 반환값이 없음
✅ sorted()는 원본을 유지하고 정렬된 결과를 반환
✅ 백준 문제 풀이를 통해 실전에서 활용 가능
📌 sort()와 sorted()의 차이
구분 | sort() | sorted() |
사용 대상 | 리스트 (list 전용) | 문자열, 리스트 등 다양한 타입 |
정렬 방식 | 원본 리스트를 직접 정렬 | 정렬된 새 리스트를 반환 |
반환값 | None | 정렬된 리스트 반환 |
원본 유지 여부 | 유지되지 않음 (변경됨) | 유지됨 |
📌 sort() 메서드 사용법
📌 리스트 내부에서 직접 정렬 (원본 변경됨)
A = ['a', 'd', 'e', 'c', 'b']
A.sort()
print(A)
# ['a', 'b', 'c', 'd', 'e']
📌 숫자 정렬
C = [3, 2, 1, 11, 4]
C.sort()
print(C)
# [1, 2, 3, 4, 11]
📌 문자열 숫자 정렬 (str 타입)
D = ['3', '2', '1', '11', '4']
D.sort()
print(D)
# ['1', '11', '2', '3', '4']
📌 sorted() 함수 사용법
📌 리스트 정렬 후 원본 유지
A = ['a', 'd', 'e', 'c', 'b']
print(sorted(A))
# ['a', 'b', 'c', 'd', 'e']
print(A)
# ['a', 'd', 'e', 'c', 'b'] (원본 유지)
📌 문자열 정렬 (배열로 반환됨)
A = "adecb"
print(sorted(A))
# ['a', 'b', 'c', 'd', 'e']
원래 문자열을 유지하려면 "".join()을 사용해야 한다.
print("".join(sorted(A)))
# abcde
📌 역순 정렬 (reverse=True)
A = ['a', 'd', 'e', 'c', 'b']
print(sorted(A, reverse=True))
# ['e', 'd', 'c', 'b', 'a']
📌 2차원 리스트 정렬 (key 활용)
📌 기본 정렬 (첫 번째 요소 기준)
A = [['a', '하늘'], ['d', '바람'], ['c', '구름']]
print(sorted(A))
# [['a', '하늘'], ['c', '구름'], ['d', '바람']]
📌 두 번째 요소(한글) 기준 정렬
print(sorted(A, key=lambda x: x[1]))
# [['c', '구름'], ['d', '바람'], ['a', '하늘']]
📌 sort(), sorted() 활용 - 백준 문제 풀이
🔹 백준 2750번 - 수 정렬하기
[문제 링크] 🔗 백준 2750번
📌 문제 설명
• N개의 정수가 주어짐 (중복 없음)
• 오름차순 정렬 후 출력
📌 코드 구현
#입력값 받기
no = int(input())
lst = [int(input()) for _ in range(0, no)]
#문제풀이 정렬 (원본 리스트 변경)
lst.sort()
# 결과 출력
print(*lst, sep="\n")
📌 입출력 예시
입력
5
5
2
3
4
1
출력
1
2
3
4
5
🔹 백준 5597번 - 과제 안 낸 학생 찾기
[문제 링크] 🔗 백준 5597번
📌 문제 설명
• 1~30번 중 과제를 제출하지 않은 2명의 번호 출력
📌 코드 구현
#입력값 받기
inputRow = [input() for _ in range(28)]
rtn = []
#문제풀이
for i in range(1, 31):
if (inputRow.count(str(i)) == 0):
rtn.append(i)
#내장함수 sorted 사용한다.
sorted(rtn)
# 결과 출력
print(*rtn, sep="\n")
📌 입출력 예시
입력 (일부)
3
1
4
...
출력
2
30
🔹 백준 1181번 - 단어 정렬
[문제 링크] 🔗 백준 1181번
📌 문제 설명
• N개의 단어 정렬
• 중복 제거
• 길이순 정렬 → 같은 길이면 사전순 정렬
📌 코드 구현
N = int(input())
lst = [input() for _ in range(N)]
#리스트 중복제거 set() 사용
a=list(set(lst))
# 리스트 값의 길이가 짧고 사전순으로 정렬
rtn=sorted(a, key=lambda x: (len(x),x))
#결과 출력
print(*rtn, sep="\n")
📌 입출력 예시
입력
13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours
출력
i
im
it
no
but
more
wait
wont
yours
cannot
hesitate
📌 마무리 - 정리
✅ sort()는 리스트를 직접 정렬하며, 원본이 변경됨
✅ sorted()는 정렬된 결과를 반환하며, 원본을 유지
✅ lambda를 활용해 복잡한 정렬 조건도 쉽게 해결 가능
'코딩라이브러리 > 파이썬' 카테고리의 다른 글
파이썬 Counter (with 백준 10815, 10816) (0) | 2024.05.28 |
---|---|
파이썬 람다 함수 lambda (with 백준 1181) (0) | 2024.05.27 |
파이썬 for while 조건문 (with 백준 2446, 2522) (2) | 2024.05.23 |
파이썬 리스트 배열의 얕은 복사(copy), 깊은 복사(deepcopy) 차이점 (0) | 2024.05.22 |
파이썬 리스트 배열 list (with 백준 5597, 10250) (0) | 2024.05.22 |