파이썬에서 만약 배열 원소들을 역순으로 나열해서 작성해야하는 문제가 있다고 가정하자. 필자는 이와같은 문제를 풀다가 Extended Slice라는 기본 개념을 놓쳤기에 이 포스팅을 통해 바로 잡고 가려고한다. 형태는 다음과 같다.
ARR[q:w:e] : index q부터 index w 까지 e간격으로 만들겠다
이러한 형태를 띄고 있는것이 Extended Slice라고 한다. 이를 직접적으로 연계시켜 생각할수 있는 문제는 밑에 링크를 참조하자.
https://www.acmicpc.net/problem/2908
문제를 읽어보면 여기서 상수라는 사람은 입력된 값을 거꾸로 읽고 그 거꾸로 읽은 값들중 가장 큰 값을 출력한다고 문제에 주어져 있다.이를 Extended Slice를 이용해서 간단하게 코드를 작성하면 다음과 같이 작성할 수 있다.
1
2
3
4
|
a = input().split(' ')
for c in range(0, len(a)):
a[c] = int(a[c][::-1])
print(max(a))
|
cs |
정말 간단하게 나오는것을 볼 수 있다. 여기서 Extended Slice개념은 3번째 줄에 보면 나오게 된다. 우선 이 코드의 전개를 하나씩 풀어보자
1 . 입력된 수를 Blank를 기준으로 split해서 리스트로 만들고 a에 대입한다.
2 . 리스트 a에 들은 각각의 인자들을 역순으로 만든후 정수형 변환하고 그 인자의 자리에 다시 대입해 준다.
3 . 리스트에서 가장 큰 값을 출력한다.
몇가지 예시를 들면
코드에서 작성된 arr[::-1](여기서 a[c]는 string형 문자열이 되므로-문자열도 배열로 취급할 수 있습니다) 같은 경우에는 역순으로 만들겠다는 이야기가 된다. 다른 경우는 밑의 사진을 참고하자.
'CS 지식 > Algorithm-이론 및 PS스킬 정리' 카테고리의 다른 글
보초법(Sential Method) (0) | 2020.10.09 |
---|---|
Queue(큐)에 대한 간단한 설명 (0) | 2020.01.11 |
O 표기법(Big - O Notation), 쎄타 표기법(Theta Notation), 오메가 표기법(Omega Notation) (0) | 2019.03.18 |
Base Algorithm with Python #3 (0) | 2019.01.23 |
순서도(Flow Chart)에 대해 (0) | 2019.01.16 |