문자열 내 마음대로 정렬하기 - Python

2023. 10. 17. 10:40공부/📝 프로그래머스

1. 풀이 코드

def solution(strings, n):
    answer = []
    for item in strings:
        temp_str = item[n] + item[0:n] + item[n+1:]
        answer.append(temp_str)
    answer.sort()
    return [item[1:1+n] + item[0] + item[1+n:] for item in answer]


# Test Cases
print(solution(["sun", "bed", "car"], 1))
print(solution(["abce", "abcd", "cdx"], 2))

  n번째 글자를 맨 앞으로 옮긴 뒤 정렬을 하고, 다시 복원하는 과정으로 문제를 풀었습니다.

 

2. 다른 사람 풀이 코드

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

  저랑 비슷하게 접근한 풀이를 발견했습니다. 그런데 훨씬 좋더라구요. 왜 이런 생각을 못했는지 아쉽습니다.

 

3. ChatGPT

def solution(strings, n):
    # n번째 글자를 기준으로 정렬하되, 같은 글자일 경우 원래 순서를 유지
    return sorted(strings, key=lambda x: (x[n], x))

  sorted() 함수에 key 매개변수가 있다는 사실을 새롭게 상기합니다. lambda 함수를 쓰려고 노력해야겠습니다.

 


 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

K번째수 - Python  (0) 2023.10.17
[1차] 비밀지도 - Python  (0) 2023.10.17
영어 끝말잇기 - Python  (0) 2023.10.16
숫자 문자열과 영단어 - Python  (0) 2023.10.16
짝지어 제거하기 - Python  (0) 2023.10.15