happy coding
[level 1] 문자열 내 마음대로 정렬하기 본문
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한 조건- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
내 풀이
def solution(strings, n):
ans = sorted(strings, key=lambda x:(x[n],x))
return ans
다른 풀이
def strange_sort(strings, n):
min = []
result = []
for i in strings:
min.append(i[n])
sorted_min = sorted(min)
while len(result) != len(strings):
for j in range(0, len(strings)):
for k in range(0, len(strings)):
if sorted_min[j] in strings[k][n]:
index = k
result.append(strings[index])
continue
return result
def strange_sort(strings, n):
def sortkey(x):
return x[n]
strings.sort(key = sortkey)
return strings
from operator import itemgetter, attrgetter, methodcaller
def solution(strings, n):
return sorted(sorted(strings), key=itemgetter(n))
# 첫째 sorted로 사전순으로 정렬, 둘째로 글자 번호 순으로 정렬
def solution(strings, n):
new =[]
answer =[]
for i in range(len(strings)):
a = strings[i][n]
b = a+strings[i]
new.append(b)
new.sort()
for i in range(len(new)):
c = new[i][1:]
answer.append(c)
return answer
def strange_sort(strings, n):
lst = []
for i in "abcdefghijklmnopqrstuvwxyz":
for j in strings:
if j[n] == i: lst.append(j)
return lst
'coding study > programmars' 카테고리의 다른 글
[level 1] 콜라 문제 (1) | 2024.07.01 |
---|---|
[level 1] [1차] 비밀지도 (0) | 2024.07.01 |
[level 1] K번째수 (0) | 2024.06.30 |
[level 1] 최대공약수와 최소공배수 (0) | 2024.06.30 |
[level 1] 숫자 문자열과 영단어 (0) | 2024.06.30 |
Comments