Python | 알고리즘 프로그래머스 튜플

gemma. K·2021년 2월 27일
0

Algorithm

목록 보기
4/4
post-thumbnail

알고리즘 개요

  • 특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성하는 알고리즘
  • 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라 한다.
  • 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어진다.
  • 이는 다음과 같이 집합 기호 "{' , '}"를 이용해 다음과 같이 표현할 수 있다.

    {{a1}, {a1, a2}, {a1, a2, a3}, {a1, a2, a3, a4}, ... {a1, a2, a3, a4, ..., an}}

  • 예를 들어 s가 "{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}"인 경우, [2,1,3,4]를 출력한다.
  • 이 때, 집합의 원소들의 순서는 바뀌어도 상관이 없다.

알고리즘 풀이

def solution(s):
    ls = sorted([s.split(',') for s in s[2:-2].split('},{')], key=len)
    result = []
    for l in ls:
        for s in l:
            if int(s) not in result:
                result.append(int(s))
                break
    return result
  • s의 맨 앞 "{{"과 "}}"를 제외한 (s[2:-2]) 문자열을 "},{"를 기준으로 split한 배열을 ","를 기준으로 다시 한번 더 각 배열 요소마다 split한 뒤, 길이를 기준으로 오름차순으로 정렬하여 ls에 담는다.
  • 이에 대한 결과값은 s가 "{{4,2,3},{3},{2,3,4,1},{2,3}}"인 경우, [['3'], ['2', '3'], ['4', '2', '3'], ['2', '3', '4', '1']]와 같은 배열이다.
  • 이 중 가장 긴 배열을 값을 int로 변경하면 끝일 것처럼 생각이 들지만 원소들의 순서가 맞지 않다.
  • 이중 for을 사용하여 result에 요소가 없는 경우, result에 해당 값을 int으로 변경하여 추가하고 추가한 후 내부의 for문을 break하는 방식으로 계속적으로 추가해야만 원래 원소들의 순서를 찾아낼 수 있다.

0개의 댓글