본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 튜플

by ㅣlㅣl 2024. 4. 7.

문제

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

 

프로그래머스

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

programmers.co.kr

 

저번에 굉장히 복잡하게 풀었던 것 같은데 간단하게 풀렸다~!


 

주요 아이디어

처음에 문제를 읽을 때는 그냥 다 때려놓고 set하면 되는거 아니야?? 했는데.. 이 문제에는 함정이 있다.

바로 result 내의 원소 순서를 맞춰야만 정답이 된다는 것

애초에 문제 조건에도 명시되어 있다!

 

  • 주어진 문자열 s를 2차원 리스트로 변환하기
  • 원소 개수 순으로 오름차순 정렬
    • 그래야 a1, a2, ... 를 구할 수 있기 때문
    • 문제 조건을 다시 참조하자

  • a1부터 차례대로 result 배열에 append 하기

 


 

코드 구현 (Python 3)

더보기

 

def solution(s):
    answer = []
    # 문자열 -> 2차원 리스트
    s = s.replace("{{", "").replace("}}", "").replace("{", "")
    s = s.split("},")
    s = [x.split(",") if "," in x else [x]
         for x in s]
    
    # 원소 개수 순으로 오름차순 정렬
    s.sort(key=lambda x: len(x))
    
    # 순회하면서 하나씩 append
    for x in s:
        for num in x:
            if int(num) not in answer:
                answer.append(int(num))
    return answer

 

 

 

제출 결과