[Programmers] P64065 튜플

Question

Language: Python

주어진 문자열을 분석해서, 튜플 값을 추출하면 된다.

{{1},{1,2,3},{1,2}}

위 와 같이 주어졋을 때 우선 양쪽 중괄호를 제거한다.


그런 다음 },{ 을 기준으로 문자열을 분리한다.

```["1","1,2,3","1,2"]```

위의 문자열을 문자열 길이 순으로 정렬해서, 순서에 맞에 튜플을 만들수 있도록 구성한다.

```["1","1,2","1,2,3"]```

이후에는 차례대로 1,2,3을 넣게 되면 튜플이 완성된다.

## Solution 1
    
```python
def solution(s):
    answer = []
    s=s[2:-2]
    splitted_parts=s.split("},{")
    splitted_parts.sort(key=lambda x: len(x))
    
    for part in splitted_parts:
        for str in part.split(","):
            if str=="":
                continue      
            data=int(str)
            if data in answer:
                continue
            answer.append(data)

    return answer

또는, Counter을 이용한 풀이 방식도 가능하다. 어차피, 가장 먼저 들어온 원소의 경우 원소의 개수가 가장 많을 것이므로, 그 순서대로 추가를 해주면 된다.

추가로, 정규표현식을 통해 숫자만을 추출해서 숫자의 개수를 구하면 훨씬 빠르게 풀이가 가능하다.

Solution 2

from collections import Counter
import re
def solution(s):
    answer=[]
    counter=Counter(re.findall("\d+",s)).most_common()
    
    for str,count in counter:
        answer.append(int(str))
        
    return answer

댓글남기기