[알고리즘] 튜플

sith-call.dev·2023년 4월 23일
0

알고리즘

목록 보기
10/47
def detect_diff(prev_list: list, now_list: list)->str:
    for now_element in now_list:
        if now_element not in prev_list:
            return now_element
        else:
            continue

def solution(s):
    answer = []
    s = s[1:len(s)-1]
    tuple_lst = list(s.split("},{"))
    tuple_lst = [x.replace("{","") for x in tuple_lst]
    tuple_lst = [x.replace("}","") for x in tuple_lst]
    tuple_lst = [[len(list(x.split(","))), list(x.split(","))] for x in tuple_lst]
    tuple_lst.sort()
    
    prev_tup: list = []
    for now_tup in tuple_lst:
        if prev_tup == []:
            tup = [int(x) for x in now_tup[1]]
            answer += tup
            prev_tup = tup
        else:
            tup = [int(x) for x in now_tup[1]]
            element = detect_diff(prev_tup, tup)
            answer.append(element)
            prev_tup = tup
            
    return answer

소감

  1. 잘 짜려고 하지 말고 일단 논리를 작성해보는게 중요함을 느꼈다.
    일단 짜보면 매우 쉽다고 느껴지기 때문이다.
    그러나 동시에 파이썬이 아닌 자바로 풀기 위해선 문자열 클래스가 제공하는 메소드를 잘 알고 있어야 함을 느꼈다.

  2. 서로 다른 스코프에서 같이 사용하는 코드는 함수로 따로 만든다.

  3. 코드가 길어질 것 같을 때는 가독성을 위해 코드를 함수로 따로 만든다.

  4. 프로그래머스

놓친 점

  1. 처음에 문제를 제대로 읽지 않아서 순서를 고려하지 않고 답을 냈다.

  2. 길이 순으로 정렬하고 싶어서 리스트 안에 필요한 정보를 더 넣었는데 아래와 같이 간략하게 짤 수도 있다.

data_lst.sort(key = lambda x : len(x))
  1. map 함수를 이용하여 int형 변환을 손쉽게 할 수 있었다.
str_data_lst = ["1", "2"]
data_lst = list(map(int, str_data_lst))
  1. set을 이용하여 not in 연산을 최적화 할 수 있다.
profile
lim (time → ∞) Life(time) = LOVE

0개의 댓글

관련 채용 정보