본문 바로가기

Python 코딩테스트

[프로그래머스] 튜플 파이썬

반응형

문제:

https://school.programmers.co.kr/learn/courses/30/lessons/64065

 

프로그래머스

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

programmers.co.kr

 

풀이:

입력받은 s를 리스트로 변환한다. 

그 이후에는 만들어진 리스트의 요소를 하나씩 접근, answer 리스트에 중복이 되지 않도록 not in 을 사용하여 하나 씩 append 한다. 여기서 핵심은

  • {{2}, {2,1}, {2,1,3}, {2,1,3,4}}
  • {{2,1,3,4}, {2}, {2,1,3}, {2,1}}
  • {{1,2,3}, {2,1}, {1,2,4,3}, {2}}

일 경우 다 같은 튜플로 처리해야 하는 2,1,3,4 조합이다.

 

그러므로 세 번째의 경우에는 리스트로 변환하면  [[1, 2, 3], [2, 1], [1, 2, 4, 3], [2]]인데, 이 리스트를 하나씩 접근하여 튜플을 만들기 위해서는 우선 만들어진 리스트를 길이를 기준으로 정렬하기 위해서 s_list.sort( key = len) 를 실행해준다. 만약, 길이를 기준으로 정렬을 하지 않는다면 [1,2,3,4] 가 만들어질 것이다. loop문으로 앞에서부터 접근하기 때문.

 


def solution(s):
    answer = []
    
    s_list = s.replace('{', '').replace('}}', '').split('},')
    
    s_list.sort(key=len)
   
    for string in s_list:
        numbers = list(map(int, string.split(',')))
        
        for number in numbers:
            if number not in answer:
                answer.append(number)
                
    return answer
반응형