코딩테스트
문자열 내 마음대로 정렬하기
개발천재나천재
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