아무나개발하자

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

코딩테스트

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

개발천재나천재 2023. 1. 26. 14:57

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12915

 

프로그래머스

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

programmers.co.kr

 

풀이

첫번째 내가 그냥 생각하고 한 풀이

'''
문제 풀이 방법
1. str_dic를 하나 생성한다.
2. strings를 for문 돌면서 n번째 인덱스에 해당하는 값을 key, 문자열 value를 str_dic에 넣어준다.
3. 만약 n 인덱스가 겹치면, 해당 value를 비교해서 "먼저나오는 값,뒤에나오는값" 이런형식으로 
","를 기준으로 넣어준다.
4. str_dic를 key값을 기준으로 sort해줌
5. answer.append를 해주는데 만약에 value에 ","를 포함하면 짤라서 append를 해준다.
'''
def solution(strings, n):
    answer = []
    str_dic = {}    
    
    for string in strings:
        sort_key = string[n]
        if sort_key not in str_dic:
            str_dic[sort_key] = string
        else:
            sort_list = []
            if "," in str_dic[sort_key]:
                sort_list = list(str_dic[sort_key].split(","))
                sort_list.append(string)
            else:
                sort_list.append(str_dic[sort_key])
                sort_list.append(string)
                
            sort_list.sort()
            str_dic[sort_key] = ",".join(sort_list)
                   
    
    sort_str_dic = dict(sorted(str_dic.items()))
    
    for val in sort_str_dic.values():
        if "," in val:
            val_lists = list(val.split(","))
            for val_ in val_lists:
                answer.append(val_)
        else:
            answer.append(val)
    
     return answer

 

 

sort 함수를 이용한 다른사람의 풀이 👍 👍 👍 

'''
key 인자에 함수를 넘겨주면 우선순위가 정해짐.
sort_list = sorted(문자열, key = lambda x : x[0]) 

비교할 아이템이 요소가 복수 개일 경우, 튜플로 우선순위를 정해줄 수 있다.
sorted(문자열, key = lambda x : (x[n], x))
'''
def solution(strings, n):
    answer = []    
    answer = sorted(strings, key = lambda x : (x[n], x))
    return answer

'코딩테스트' 카테고리의 다른 글

영어 끝말잇기  (0) 2023.01.28
[1차] 캐시  (0) 2023.01.27
가장 가까운 같은 글자  (0) 2023.01.13
[1차] 비밀지도  (0) 2023.01.11
이상한 문자 만들기  (0) 2023.01.10