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

김멉덥·2023년 7월 18일
0

알고리즘 공부

목록 보기
60/171
post-thumbnail
post-custom-banner

문제

프로그래머스 연습문제


코드 구현

def solution(strings, n):
    answer = []

    strings.sort()

    std_list = []

    for i in range(len(strings)):
        std_list.append(strings[i][n])

    std_list.sort()

    for i in std_list:
        for j in range(len(strings)):
            if(i == strings[j][n]):
                if(strings[j] not in answer):
                    answer.append(strings[j])

    return answer

풀이

  • 처음에는 sort에 key를 전달하는 식으로 짰는데 테스트케이스도 아닌 2번 예제에서 오류가 났다.
return sorted(strings, key=lambda x: x[n])
  • 따라서 우선 n번째 단어들을 추출하여 배열에 넣고 → 해당 배열을 정렬하여 기준이 되도록 한다.
  • 2중 for문을 통해, 만약 n번째 단어 배열의 요소를 가지고 있는 단어를 찾으면 → answer에 이미 들어있는게 아닌지 검사 → answer에 넣은적 없는 값이면 append
  • answer에 있는지 없는지 검사하는 이유는, 2번 예제처럼 만약 n번째 단어의 요소가 동일한 단어가 있다면 해당 단어가 중복되어 계속 들어가기 때문이다.
  • set()으로 중복을 제거하면 정렬한 의미가 사라지기 때문for문의 조건문을 통해 처리하였다.

profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

항상 좋은 글 감사합니다.

답글 달기