본문 바로가기
2021/코딩테스트

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

by 에이도 2020. 11. 26.

 

 

 

def solution(strings, n):
    
    answer = []
    alphas = []
    for i in range(0,len(strings)):

        word_index = strings[i][n]          # strings내에 있는 index = n에 해당하는 알파벳
        alphas.append(word_index)              # 모두 모으기

        alphas = sorted(alphas)             # 모은 알파벳들 오름차순으로 정렬
    strings = sorted(strings)               # strings 오름차순 정렬
    for i in alphas :                      # 단어의 n번째 알파벳들 하나씩 뽑는다.
        for k in range(0,len(strings)):    # strings를 돌면서 n번째 알파벳들이 있는 단어를 찾는다.
            if strings[k][n] == i:         # 해당 단어에 n번째 알파벳이 있으면
                if strings[k] in answer:       # 먼저 그 해당단어가 answer에 있는지 확인하고
                    pass
                else:
                    answer.append(strings[k])   #해당 단어가 없다면, 해당 단어를 추가한다.
                    k+=1                        # 다음 단어로 넘어간다. 
    return answer
print(solution(["sun", "bed", "car"], 1))

print(solution(['abce', 'abcd', 'cdx'], 2))

(아름다움의 기준은 다르니.. 너도 괜찮단다 코드야.. 내가 미안해)

 

 

람다 함수를 이용한 풀이를 보고 조금 충격을 받았다.
위의 로직 생각하느라 1시간 정도가 걸렸었는데 람다 함수로 key값만 입력해주면 되었기 때문이다.

lambda함수는 존재만 알고있었고 아직 제대로 사용해보지 못해 보았는데,    
지금부터라도 조금씩 클린코드를 위해 배워야겠다..! 

def solution(strings,n):
    answer = sorted(strings, key =lambda x : x[n]+x[:])
    return answer
print(solution(["sun", "bed", "car"], 1))


print(solution(['abce', 'abcd', 'cdx'], 2))

댓글