문제 설명

문자열로 구성된 리스트 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"] 입니다.


첫 번째 접근

딕셔너리로 해당 index 값을 key로 하고, key를 기준으로 정렬한 후에 진행하면 되지 않을까 싶었지만 key가 알파벳이기 때문에 유일하지가 않았다. 그렇다고 해시테이블을 만들정도는 아니다 싶었다. 그래서 버블정렬을 직접 구현하면 가능하다 싶어 버블정렬을 구현하려 하니 기억이 가물가물했다.. 정렬 뿐 아니라 취업을 위한 코테 유형은 공부하고 다시 해야겠다.. 구글링 하면서 버블소트 작성했다.

빨리 풀 수 있을줄 알았는데 생각보다 어려웠던 정렬 문제. 기본기 쌓기 !

def solution(strings, n):
            
    for i in range(1, len(strings)):
        for j in range(0, len(strings)-1):
            print(strings[j][n], strings[j+1][n])
            if strings[j][n] > strings[j+1][n]:
                strings[j], strings[j+1] = strings[j+1], strings[j]
            if strings[j][n] == strings[j+1][n]:
                if strings[j] > strings[j+1]:
                    strings[j], strings[j+1] = strings[j+1], strings[j]
    
    
    return strings