| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 프로그래멋
- 다익스트라
- 프로그래머스
- 자바
- dfs
- 조합
- Java
- 그래프탐색
- 백준
- 15686
- Summer/Winter Coding(~2018)
- 분할정복
- 그래프
- Lv2
- 정렬
- GIT
- 토마토
- 구현
- 완전탐색
- 월간 코드 챌린지 시즌1
- 알고리즘고득점Kit
- DP
- 알고리즘
- 정수 삼각형
- BFS
- Python
- 1932
- 깃허브 프로필
- 이코테
- 깃허브
Archives
- Today
- Total
갱스터하우스
[Python] Lv1. 문자열 내 마음대로 정렬하기 본문
https://programmers.co.kr/learn/courses/30/lessons/12915
코딩테스트 연습 - 문자열 내 마음대로 정렬하기
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱
programmers.co.kr
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한 조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
나의 접근방법 및 풀이
"n번째 문자" : "전체 단어" 의 딕셔너리를 이용해서 풀려고 했지만, 딕셔너리에서 key값이 중복이 되는 경우를 생각하지 않아서 실패했다.
def solution(strings, n):
answer = []
tmp = {}
for i in range(len(strings)):
tmp[strings[i][n]] = strings[i]
stmp = sorted(tmp.items())
for i in stmp:
answer.append(i[1])
return answer
solution(["sun", "bed", "car"], 1)
solution(["abce", "abcd", "cdx"], 2)
다른 풀이들을 참고해, 각각의 단어 앞에 정렬하는 인덱스의 문자를 붙여 새로운 리스트에 추가하여 정렬한 뒤, 슬라이싱을 이용해 return 하였다.
def solution(strings, n):
tmp = []
answer = []
for s in strings:
tmp.append(s[n]+s)
tmp = sorted(tmp)
for s in tmp:
answer.append(s[1:])
return answer
다른 풀이
lambda를 이용해서 x[n]+x[:](=n에 해당하는 문자+각 문자)를 key로 하여 strings를 정렬한다.
def solution(strings, n):
'''strings의 문자열들을 n번째 글자를 기준으로 정렬해서 return하세요'''
return sorted(strings, key = lambda x : x[n]+x[:])
solution(["sun", "bed", "car"], 1)
solution(["abce", "abcd", "cdx"], 2)
'코테 문제 > 프로그래머스' 카테고리의 다른 글
| [Python] Lv1.행렬의 덧셈 (0) | 2022.04.13 |
|---|---|
| [Python] Lv1. 완주하지 못한 선수 (0) | 2022.04.13 |
| [Python] Lv1.두 개 뽑아서 더하기 (0) | 2022.04.12 |
| [Python] Lv1. 소수 찾기 (0) | 2022.04.12 |
| [Python] Lv1.소수 만들기 (0) | 2022.04.12 |