728x90
반응형
https://www.acmicpc.net/problem/11656
문제를 풀면서 몰랐던 개념
(1) 인덱스를 사용해서 삭제하려면 remove 함수가 아니라 pop 함수를 사용해야 한다는 점.
-> remove(값), pop(인덱스)
(2) [Python] 문자열 슬라이싱
-> 시작 위치와 끝 위치를 지정하여 원하는 만큼 문자열을 잘라서 출력
>>> str = 'abcdefg'
>>> print(str[2:])
cdefg
>>> print(str[:2])
ab
>>> print(str[2:3])
c
>>> print(str[2:6])
cdef
>>> print(str[:-1])
abcdef
>>> print(str[-1:])
g
>>> print(str[-3:-4])
>>> print(str[-3:-1])
ef
>>> print(str[-3:0])
>>> print(str[-3:])
efg
문제의 접근 방법
- 문자열 S 입력받기
- 반복문을 이용해서 문자열 슬라이싱으로 모든 접미사 출력
- 모든 접미사를 리스트에 넣은 후 정렬
내가 막혔던 부분
(1) 문자열 슬라이싱을 생각하지 못함.
-> 입력받은 문자열을 알파벳 단위로 하나씩 분리해서 리스트에 넣은 후, pop 함수를 통해서 0번째 인덱스부터 제거하려고 했다. 그 후, 정렬해서 출력하려는 방식으로 접근했다.
문제 풀이 방법
문자열 S를 입력받기 -> S의 길이만큼 반복문을 돌려서 i번째 요소부터 출력되게 슬라이싱을 걸어준다 -> 그 모든 접미사들을 arr 리스트에 추가해준다 -> 만들어진 접미사들이 모여있는 새로운 리스트 arr를 정렬해준다 -> 출력형식에 맞게 출력!
소스코드
S = str(input())
n = len(S)
arr = []
for i in range(n):
arr.append(S[i:])
arr = sorted(arr)
for i in arr:
print(i)
728x90
반응형
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 중복 빼고 정렬하기 : 10867번 - Python (0) | 2021.07.16 |
---|---|
[백준] 점수 계산 : 2822번 - Python (0) | 2021.07.16 |
[백준] 보물 : 1026번 - Python (0) | 2021.07.16 |
[백준] 좌표 정렬하기 2 : 11651번 - Python (0) | 2021.07.16 |
[백준] 소트인사이드 : 1427번 - Python (0) | 2021.07.15 |