A. 문제설명
문제에 대한 자세한 설명은 링크 참조
programmers.co.kr/learn/courses/30/lessons/64065
1. 열거형의 특정 순서를 따르는 요소들의 모음을 튜플이라고 한다.
2. n개의 요소들을 가진 튜플을 n-튜플이라고 할 때, 아래와 같은 성질을 가진다.
중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2)
원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2)
튜플의 원소 개수는 유한합니다.
3. 원소가 n개이고 중복이 없는 튜플이 주어질 때, 집합기호로 아래와 같이 표현한다.
{{a1}, {a1, a2}, {a1, a2, a3}, {a1, a2, a3, a4}, ... {a1, a2, a3, a4, ..., an}}
4. 이는 {a1, a2, a3, a4, ..., an}을 나타낸다고 할 때, 특정 튜플을 표현하는 문자열의 집합을 받아, 표현하는 해당 튜플을 반환하라.
B. 접근법
정렬
본 문제에서 튜플의 표현형이 스트링 형태의 입력으로 주어져서 전처리하는 것이 귀찮지만, 문제 자체의 난이도가 크게 어려운 편은 아니었다. 스트링 구조의 입력을 집합의 집합으로 자료구조를 옮기고(내 경우 nested vector로 표현하였다.) 그 안에서 내부 집합들의 크기에 따라 정렬을 해준 후, 제일 작은 집합의 원소부터 튜플에 삽입하는 식으로 반복문을 수행한다.
여기서, check[] 벡터를 사용하여 튜플에 이미 삽입된 원소는 배제할 수 있도록 조건문을 하나 추가한다.
C. 풀이
1. 스트링으로 주어진 형태의 입력을 대괄호를 기준으로 나눔
2. 대괄호 내에서 나누어진 튜플들의 원소를 정수형으로 쪼개어 중첩벡터에 삽입
3. 중첩벡터 내 벡터, 각 튜플의 원소의 크기에 따라 정렬
4. 그 안에서 제일 작은 집합의 원소부터 튜플에 삽입
D. 내 코드