코딩코딩

[프로그래머스] level1 문자열 내 마음대로 정렬하기 - 파이썬(Python)

Jerry Jun 2020. 8. 22. 21:59
728x90

문제

 

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

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

programmers.co.kr

 

 

코드

string = []
def swap(strings, x, y):
    strings[x], strings[y] = strings[y], strings[x]

def solution(strings, n):
    for i in range(len(strings)):
        string.append(strings[i][n])
    for size in reversed((range(len(strings)))):
        for i in range(size):
            if(string[i] > string[i+1]):
                swap(string, i, i+1)
                swap(strings, i, i+1)
            elif(string[i] == string[i+1]):
                if(strings[i] > strings[i+1]):
                    swap(string, i, i+1)
                    swap(strings, i, i+1)
    return strings

 

 

코드해석

이 문제의 핵심은 정렬이다.

나는 이 문제를 풀기 위해 "버블 정렬(Bubble Sort)"을 사용하였다.

 

첫 번째 해야 하는 것은 문자열 내의 인덱스를 통해 한 글자를 뽑아내는 것이었다.

그래서 새로운 string 을 선언하여 그 곳에 넣었다.

 

그리고 버블 정렬을 통해 첫 번째 문자와 그 다음문자를 비교해 첫 문자가 크다면 자리를 옮기는 방법을 이용했다.

물론, 원본 배열인 strings와 새로운 문자 1개를 뽑아낸 배열 string을 같이 업데이트 하였다.

 

그랬더니.... 성공!

 

 

correct
programmers

300x250