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

Lee, Chankyu·2021년 9월 18일
0
post-thumbnail

문자열 내 마음대로 정렬하기

문제 링크

나의 풀이

#첫 번째 풀이
def solution(strings, n):
    answer = []
    for i in strings:
        answer += i[n]
    answer = sorted(answer)
    answer2= []
    for i in answer:
        for j in strings:
            if j[n] == i:      
                answer2.append(j)            
    return answer2
  • 주어진 인덱스의 문자가 같은 문자열이 여럿일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치하는 조건을 만족하지 못한 코드 이다. 아래와 같이 다시 작성하였다.
#두 번째 풀이
def solution(strings, n):
    answer = []
    for i in range(len(strings)):
        strings[i] = strings[i][n] + strings[i]
    strings = sorted(strings)
    
    for string in strings:
        answer.append(string[1::])
    return answer
  • 주어진 인덱스 n 의 문자를 각 문자열의 가장 앞에 붙이고 오름차순 정렬한 다음에 슬라이싱을 이용해 앞에 붙인 문자열을 떼서 return 한 방식이다.

다른 사람의 풀이

def strange_sort(strings, n):
    min = []
    result = []
    for i in strings:
        min.append(i[n])
        sorted_min = sorted(min)

    while len(result) != len(strings):
        for j in range(0, len(strings)):
            for k in range(0, len(strings)):
                if sorted_min[j] in strings[k][n]:
                    index = k
                    result.append(strings[index])
                    continue

    return result
  • 간결한 코드도 아니고 좋은 답안인지는 잘 모르겠지만 내가 첫번째로 작성한 답안과 동일한 풀이방식을 가지고 있다. 하지만 난 첫 번째 풀이방식으로 답을 맞추지 못했기 때문에 이 소스코드를 가져와 봤다. 공부하는 입장에서는 효율성 여부를 떠나 끝까지 답을 도출한 것도 충분히 의미가 있다고 생각한다.
  • 추가적으로 lambda함수를 이용한 풀이법에 대해 공부해야겠다.
profile
Backend Developer - "Growth itself contains the germ of happiness"

0개의 댓글