1. 문제
2. 설명
3. 풀이 및 코드
처음에는 아래와 같이 구현하였습니다.
그러나 다 완성하고 보니 정렬하는 부분의 위의 코드를 다 지워버리고 싶었습니다.
def solution(input_set):
answer = []
set_list = list(input_set)
isNum = False
replaced_input_set = ""
input_set_list = []
arr = []
standard = 0
input_set = input_set[1:]
input_set = input_set[:-1]
replaced_input_set = input_set
num = ""
for element in replaced_input_set:
if element.isnumeric():
isNum = True
else:
isNum = False
if isNum:
num += element
if element == "," and num != "":
arr.append(int(num))
num = ""
elif element == "}":
arr.append(int(num))
num = ""
input_set_list.append(arr)
arr = []
input_set_list.sort(key=len)
res = set()
res_list = []
for set_list in input_set_list:
for element in set_list:
if element not in res_list:
res_list.append(element)
return res_list
그래서 더 단순하게 리팩토링을 진행하였습니다.
1. ","와 숫자형태의 문자들이 남아있도록 합니다.
2. ","도 제거합니다.
3. 배열의 길이에 따라 정렬합니다.
4. 차례로 순회하면서 튜플을 설정합니다.
def set_tuples(tuples, sorted_strings):
for string in sorted_strings:
for num_str in string:
num = int(num_str)
if num not in tuples:
tuples.append(num)
def solution(tuple_set):
tuples = []
string_n_commas = tuple_set[2:-2].split("},{")
strings = [string_n_comma.split(",") for string_n_comma in string_n_commas]
sorted_strings = sorted(strings, key = lambda x : len(x))
set_tuples(tuples, sorted_strings)
return tuples
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 숫자 문자열과 영단어 (0) | 2021.10.05 |
---|---|
[프로그래머스] 괄호 변환 (python) (0) | 2021.07.02 |
[프로그래머스] 문자열 압축 (python) (0) | 2021.07.01 |
[프로그래머스] 순위검색 (python) (0) | 2021.06.30 |
[프로그래머스] 네트워크(python) (0) | 2021.06.29 |
댓글