이노베이션 캠프

[TIL] 6일차

hjkim0502 2022. 8. 6. 23:01
  • 자바에 처음보단 익숙해져서 불편한 느낌은 덜한데, 그래도 코테용으로는 확실히 아닌 것 같다
  • 출발이 늦으신 분들도 이제 슬슬 맞춰서 같이 갈 수 있을 것 같아 다행이다
  • 아직은 프로그래머스 레벨 1 수준의 문제들이라 무리 없이 소화하고 있다
  • stream이나 string buffer 같은 것들을 잘 사용해야 할 것 같다

 

  • 파이썬 DFS 복습

46번

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        result = []
        
        # nums에서 하나 빠져서 prev_nums에 추가 -> 반복, 재귀 -> 순열
        def dfs(nums, prev_nums):
            if not nums:
                result.append(prev_nums[:])
                return
            
            for n in nums:
                next_nums = nums[:]
                next_nums.remove(n)
                
                dfs(next_nums, prev_nums + [n])
                
        dfs(nums, [])
        return result

 

77번

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        ans = []
        
        def dfs(nums, start, k):
            if k == 0:
                ans.append(nums[:])
                return
            
            for i in range(start, n + 1):
                dfs(nums + [i], i + 1, k - 1) # 자신 이전 값 빼고 재귀 호출
                
        dfs([], 1, k)
        return ans
  • dfs 함수에 들어갈 매개변수 설정이 아직은 좀 어렵다