본문 바로가기

Algorithm

문자열 내맘대로 정렬하기 / 프로그래머스

 

첫 번째 접근

  • 인덱스로 뽑은 키들과 원래 문자열을 딕셔너리로 만들기
  • 키를 정렬한 후 정렬된 키를 바탕으로 새로운 딕셔너리 만들기
  • 중복 키 처리가 곤란함
s = ["csdf", "bbb", "cccc"]
n = 1
dic = {}
idx = []

for i in s:
    dic[i[n]] = i
print(dic.keys())
sorted_key = sorted(dic.keys())
new_dic = {}
for i in sorted_key:
    new_dic[i] = dic[i]
print(new_dic.values())

 

정답

  • 키를 뽑은 인덱스와 원래값을 함께 담은 리스트생성
  • 인덱스 순으로 정렬하고, 인덱스가 동일하다면 원래 문자열값과 비교
def solution(strings, n):
    answer = []
    num = []
    #정렬 인덱스를 뽑은 리스트 만들기
    for i in strings:
        num.append([i[n], i])
    num.sort(key = lambda m : (m[0], m[1]))
    for i in num:
        answer.append(i[1])
    return answer