알고리즘 (JAVA)/프로그래머스 알고리즘

[코테준비 - python] 문자열 내 마음대로 정렬하기 level1 - 개발자 배찌

개발자 배찌 2022. 12. 15. 15:10
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

일단 알아야했던 포인트!!

dict 정렬!!

- key 기준으로 정렬 (오름차순)

 sorted_dict = sorted(x.items())

- key 기준으로 정렬 (내림차순)

 sorted_dict = sorted(x.items(),  key=lambda item:item[0], reverse = True )

- value 기준으로 정렬 (오름차순)

 sorted_dict = sorted(x.items(), key=lambda item:item[1])

- value 기준으로 정렬 (오름차순)

 sorted_dict = sorted(x.items(), key=lambda item:item[1])

- value 기준으로 정렬 (내림차순)

 sorted_dict - sorted(x.items(), key=lambda item:item[1], revers = True)

 

 

성공한 나의 코드 !!

일단 가장 생각을 많이했던 부분은 정렬.. 문법적인 문제와

"인덱스 1의 문자열이 같은 문자열이 존재할 경우"

>> 이부분을 곰곰히 생각해보다가.. 처음부터 strings 를 정렬 하고 시작하면 어떨까 생각해서 풀었더니 해결!

from collections import defaultdict
def solution(strings, n):
    answer = []
    
    #사전정렬 먼저 해주어야함. 같은 문자열이 여럿일 경우, 사전순으로 앞쪽에 위치해야 하기 때문.
    strings = sorted(strings)
    
    x = defaultdict(int)
    
    for i in range(len(strings)):
        x[i] = strings[i][n]   #0:u, 1:e, 2:a
    
    #defaultdict 정렬
    sorted_dict = sorted(x.items(), key=lambda item:item[1]) 
    print(sorted_dict) #[(1, 'a'), (0, 'e'), (2, 'u')]
    
    #index 차례대로 answer 에 넣기 
    for i in range(len(sorted_dict)):
        answer.append(strings[sorted_dict[i][0]])

    return answer

 

 

다른사람 문제풀이

이렇게 간단한 방법이 있었다..정렬 문법 공부를 나름 했는데 이생각을 왜 못했지 ㅇ_ㅇ

def solution(strings, n):
    return sorted(sorted(strings), key=lambda x: x[n])