슬기로운 연구생활

[프로그래머스] 문자열 내 마음대로 정렬하기 본문

슬기로운 코테 생활

[프로그래머스] 문자열 내 마음대로 정렬하기

vhrehfdl 2020. 11. 12. 14:20

* 문제

programmers.co.kr/learn/courses/30/lessons/12915

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1

programmers.co.kr

 

* 문제 풀이 

- 첫째, 문자열의 n번째 위치하는 글자를 수집한 후, 중복 제거하여 정렬한다.

- 둘째, n번째 글자를 기준으로 일치하는 값이 있으면 따로 수집한다.

- 셋째, 해당 리스트를 정렬한 후 answer 리스트에 extend해 정답을 생성한다.

 

* 생각

- 이중 for문을 사용하기 때문에 시간복잡도가 매우 거슬렸다. 

시간복잡도 최적화되게 풀 수 있을까?

 

* 코드 

def solution(strings, n):
    seq_list = []
    for i in range(0, len(strings)):
        seq_list.append(strings[i][n])
    
    seq_list = list(set(seq_list))
    seq_list.sort()

    answer = []
    for i in range(0, len(seq_list)):
        temp_list = []
        for j in range(0, len(strings)):
            if seq_list[i] == strings[j][n]:
                temp_list.append(strings[j])
        temp_list.sort()
        answer.extend(temp_list)
    
    return answer

 

Comments