[TIL_Carrotww] 12 - 22/09/15

유형석·2022년 9월 15일
0

TIL

목록 보기
14/138
post-thumbnail

📝Carrotww의 코딩 기록장

🧲 패킹 언패킹

🔍 언패킹이란 ?

  • 언패킹은 간단하게 set, tuple, list 형태를 풀어주는 것을 말한다.
  • 위 자료형 변수 앞에 * 을 붙여주면 된다.
def fun1(*args: int) -> int:
    result = 0
    for i in args:
        result += i
    return result
test = (1, 2, 10, 4, 5)
print(fun1(*test)) # 22
  • 위 fun1 함수는 int형 인자를 여러개 받도록 의도 되었는데 print 부분에 test 라는 tuple이 들어간 것을 볼 수 있다.
    위 fun1(*test) 는 fun1(1, 2, 10, 4, 5) 가 들어간것과 같다.

🔍 dictionary도 언패킹이 가능한데 key, val 형태로 들어가 key, val 형태로 사용 가능하다.

test = dict()
fun1(**test)

dictionary 언패킹은 ** 을 붙여야 한다.

🧲 알고리즘 Dynamic Programming

🔍 이번 문제는 방법을 떠올리는데 까지 오래 걸렸다.
다이나믹 프로그래밍 문제들은 문제 난이도가 평균적으로 어려운거 같고, 모든 문제가 그렇겠다만은, 특히 접근 방법을 알면 쉽게 풀리는 것 같은 느낌...? 이 든다.

🔗 Programmers_N으로 표현_Level3

🔍 풀이

from collections import defaultdict
def solution(n, number):
    def fun1(set1, set2):
        temp = set()
        for i in set1:
            for j in set2:
                temp.add(i + j)
                temp.add(i * j)
                temp.add(j - i)
                temp.add(i - j)
                if j != 0: temp.add(i // j)
                if i != 0: temp.add(j // i)
        return temp # 입력받은 두 개의 set 을 모두 계산하여서 temp 에 저장
    temp = defaultdict(set)
    for i in range(1, 10):
        if i == 1:
            temp[i].add(n)
        else:
            str_append = int(str(n) * i)
            temp[i].add(str_append)
            for x in range(1, i):
                for y in range(1, i):
                    if x + y == i:
                        temp_result = fun1(temp[x], temp[y])
                        for re in temp_result:
                            temp[i].add(re)
        if number in temp[i]:
            return i
    return -1

💡 접근 방법

  • 결국 모든 계산을 해야하며 트리나 재귀 느낌으로 쭉 타고 들어간다고 생각하면 편할 것 같다.
  • 최대 9번 반복이니 1~9 번 반복
  • 중복 제거를 위해 set() 사용
  • 55 -> N 이 5일때 2번 반복해서 나올 수 있는 수
  • 555 ->N 이 5일때 3번 ... 하기 관련 코드
str_append = int(str(n) * i)
  • defaultdict key 값에 반복 횟수 결과값을 저장하였다. -> 이 부분만 떠올리면 쉽게 풀 수 있을 것 같다.

🧲 잡설..

🔍 퇴근 후 코딩 공부를 하는 것이 시간이 별로 없고 더 하고 싶어서 퇴사하였는데 12시간씩 코딩을 하니 더(?) 좋다 ㅋㅋㅋㅋㅋ 점심 저녁을 회사에서 먹었었던걸 집에서 먹으려 하니 너~~무 귀찮고 허리가 좀 아프지만 ㅠ 만족하면서 공부 중이다.
🔍 솔직히 하루에 습득한 지식, 푼 알고리즘 문제들을 모두 올리고 싶지만 쉬운것 어려운것 포함해서 못해도 3개 많게는 5 ~ 10 문제를 푸는 것 같지만 전부 올리기는 힘들어
💡인상 깊은 문제 💡어려웠던 문제 and 💡자꾸 헷갈리는 지식들 위주로 올리고 있다. 오늘 끝!

profile
Carrot_hyeong

0개의 댓글