문제풀이
import re
def solution(s):
answer = []
s = s.split('},{')
for idx in range(0, len(s)):
num_array = []
s[idx] = re.sub("\{|\}", "", s[idx])
s[idx] = s[idx].split(',')
for i in range(0, len(s[idx])):
s[idx][i] = int(s[idx][i])
s.sort(key=len)
for num_array in s:
for num in num_array:
if num not in answer:
answer.append(num)
break
return answer
알고리즘
특별한 알고리즘이 필요한 문제는 아니다. 다만 전에 봤던 sub() 메소드를 사용하면 쉽게 해결할 수 있다.
sort(key=len)
sort는 리스트를 오름차순으로 정렬하는 함수이다. 이번 문제에서는 내부 리스트의 크기를 기준으로 정렬해야하기 때문에 sort()메소드 안에 key=len 인수를 넣어서 리스트 크기를 기준으로 정렬하도록 했다.
그 외에도 다른 인수도 있다.
- reverse=True: 정렬 결과를 반전
- key=len: 문자열 기준으로 정렬
- ket=str.lower: 대소문자 구분 없이 정렬
출처
문제: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges