Algorithm Problem with Python — 21day
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한사항
입출력 예
입출력 예 1
"sun", "bed", "car"의 1번째 인덱스 값은 각각 "u", "e", "a" 입니다. 이를 기준으로 strings를 정렬하면 ["car", "bed", "sun"] 입니다.
입출력 예 2
"abce"와 "abcd", "cdx"의 2번째 인덱스 값은 "c", "c", "x"입니다. 따라서 정렬 후에는 "cdx"가 가장 뒤에 위치합니다. "abce"와 "abcd"는 사전순으로 정렬하면 "abcd"가 우선하므로, 답은 ["abcd", "abce", "cdx"] 입니다.
리스트의 정렬 문제입니다.
리스트의 원소는 문자열이며 단순한 정렬에 약간 꼬았습니다.
원소의 n번 쨰를 비교해야되서 복잡하게 느껴지지만 결국 문자열을 담은 리스트의 정렬입니다.
어떻게 복잡함을 무시하고 간단하게 만드는 지가 관건입니다.
def solution(strings, n):
answer = []
for i in range(len(strings)):
strings[i] = strings[i][n] + strings[i]
strings.sort()
print(strings)
for k in range(len(strings)):
answer.append(strings[k][1:])
return answer
어떻게 각 원소의 n번 쨰를 기준으로 하여 정렬하는지 생각하면 복잡하지만
단순히 n번 쨰 문자 하나만을 비교하여 정렬한다고 생각하면 간단해집니다.
기존 문자열 맨 앞에 기준이 되는 문자를 추가하여 비교하고 다시 원상복구를 하기위해 슬라이싱을 하면 문제의 요구대로 n번 쨰를 기준으로 정렬할 수 있습니다.