코딩 테스트/프로그래머스
[Python] 프로그래머스 lv.0 접미사 배열
위시리
2024. 10. 20. 16:43
문제 분석
- 접미사란 특정 인덱스부터 시작하는 문자열
- string이 주어질 때 모든 접미사를 사전순으로 정렬하여 return
코드 설계
- 입력받은 문자열에 대해 문자열 길이만큼 반복하면서 접미사 추출 : list에 append
- 접미사를 추출하기 위한 반복문에서 파이썬의 slice 특징에 따라 반복문은 1부터 len(str) + 1까지
for i in range(1, len(my_string)+1):
suffix.append(my_string[:i])
- b, ba, ban. bana .. 가 아니라 banana, anana, nana .. 이 접미사
- 수정
for i in range(0, len(my_string)):
suffix.append(my_string[i:])
- 접미사 list를 사전 순서로 정렬 : sort( ) or sorted( )
- 문자열도 파이썬에서 sort 메소드로 정렬 가능
- arr.sort( ) Vs. sort(arr)
arr = [2,5,4,1,3]
# sorted() : 변형 X, 정렬된 새로운 배열 반환
print(sorted(arr)) # [1, 2, 3, 4, 5]
print(arr) # [2, 5, 4, 1, 3]
# sort() : 변형 O, 반환 값은 없음
print(arr.sort()) # None
arr.sort()
print(arr) # [1, 2, 3, 4, 5]
- sorted(arr) : arr 배열을 변형하지 않고, arr 배열이 오름차순으로 정렬된 새로운 정렬 반환
- arr.sort( ) : arr 배열을 오름차순으로 변형하고 반환 x
정답 코드
def solution(my_string):
answer = []
suffix = [] # 접미사 배열
for i in range(0, len(my_string)):
suffix.append(my_string[i:])
answer = sorted(suffix)
return answer
다른 사람 코드 1
def solution(my_string):
answer = []
for i in range(len(my_string)):
answer.append(my_string[-i:])
answer.sort()
return answer
다른 사람 코드 2
def solution(my_string):
return sorted(my_string[i:] for i in range(len(my_string)))