[Programmers] P64065 튜플
[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
댓글남기기