코딩테스트/프로그래머스

[프로그래머스] [Level 1] 문자열 내 마음대로 정렬하기

박소민 2022. 3. 2. 18:42
문제) 문자열 내 마음대로 정렬하기
 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱

programmers.co.kr

 

  • 첫 풀이(오답)

- 정해진 인덱스 값 기준으로 정렬 후 중복된 값 사전 정렬 시도

- 문자열 중 인덱스 n번째 값 기준으로 정렬:

  → strings.sort(key=lambda a: a[n])

- 테스트 케이스 절반은 오답

def solution(strings, n):
    strings.sort(key=lambda a:a[n])
    answer=[]
    s=''
    id=0
    index_s=0
    for i in strings:
        answer.append(i[n])
    for k in range(len(strings)):
        for j in strings:
            if s==j[n]:
                continue
            id=answer.count(j[n])
            if id>1:
                index_s=answer.index(j[n]) #가장 앞에 있는 값 인덱스
            for i in range(id-1):
                if strings[index_s]>strings[index_s+1]:
                    strings[index_s],strings[index_s+1]=strings[index_s+1],strings[index_s]
                    index_s+=1
            s=j[n]
    return strings

 

  • 내 풀이

- 먼저 사전 정렬 후, 주어진 인덱스 값으로 정렬

def solution(strings, n):
    strings.sort()
    strings.sort(key=lambda a:a[n])
    return strings
print(solution(["sun", "bed", "car"],1)
print(solution(["abce", "abcd", "cdx"],2)
#결과
["car", "bed", "sun"]
["abcd", "abce", "cdx"]