본문 바로가기
Algorithm

[Algorithm] 백준 정렬 알고리즘 - Python 버전

by SnoopyCoffee 2022. 9. 7.
반응형
import sys
n = int(input())
sys.stdin.readline().split()

2022년 9월 6일 , 7일 이틀을 걸쳐 백준의 정렬 단계를 C++ 버전과 Python로 문제를 풀어보았다.

 

결론은 c++ 보다는 Python으로 푸는것이 훨 더 편했다.

 

Python을 이용을 해서 현업에서 일도 진행 해보고, 대학교에서도 가장 많이 다뤘던 것이 Python이였는데

 

왜 Python으로 문제를 풀 생각을 안했는지 아직도 이해가 안된다...

 

그래도 오랜만에 Python을 만졌기에 익히는데는 조금의 시간이 필요하지만 금방 적응할 수 있을 것 같다.

 

Python 으로 문제풀면서 자주 활용되는 것

 

1. 아래 예제 처럼 입력하는 것이 일렬로 주어졌을 경우 for문을 사용하지않고 리스트에 넣는 방법

 - list, map, spilt() 을 이용하면 한줄로 리스트에 대입할 수 있다.

x = list(map(int, input().split()))

예제 입력 1 

5 2
100 76 85 93 98

2. 입력처리

 - Python에서 입력처리는 input() 을 이용해서 터미널에 값을 입력 하게된다.

input()은 input -> 개행 문자를 벗기기 - > 문자열로 변환 -> return의 절차를 거친다.

하지만, sys.stdin은 사용자의 입력을 받는 buffer를 만들어 그 buffer에서 읽어들이는 방식이기에 input()보다는 좀 더 빠른속도를 낼 수 있다.

import sys
n = int(input())
sys.stdin.readline().split()

3. 정렬 조건

- python에서 정렬은 다른 언어와 똑같이 오름차순이 Default이며 내림차순으로 정렬 시에는 reverse = True 값을 인자에 작성해주면 된다.

- Python은 stable sort를 제공한다.

- 정렬을 진행할 때 ['A', 1, 2] ['F', 2, 3] ['D', 1, 2] 이와 같이 여러개의 데이터가 한묶음으로 존재할 때 (key=lambda x: 대상)

를 이용하여 원하는 대상을 기준으로 정렬 할 수 있다.

x.sort(key=lambda x:x[0], reverse=True)

 

 

앞으로도 Python으로 백준 문제를 풀 예정이다.

반응형