happy coding

[level 1] 문자열 내 마음대로 정렬하기 본문

coding study/programmars

[level 1] 문자열 내 마음대로 정렬하기

yeoonii 2024. 6. 30. 23:44

문제 설명

문자열로 구성된 리스트 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