재귀
·
PS/알고리즘
재귀는 큰 문제를 해결하기 위해 동일한 유형의 더 작은 문제로 나누는 방식자기 자신을 호출하여 반복적으로 작은 문제를 해결해 나가며, 궁극적으로 원래 문제를 해결함📌 완전 탐색, DP, 그래프, 트리 순회와 같은 알고리즘 문제를 푸는 데 중요! 구성 요소기저 조건 (Base Case)더 이상 문제를 쪼갤 수 없거나, 답이 명확해지는 종료 조건기저 조건이 없다면, 무한 호출되며 `Recursion Error` 발생재귀 호출 (Recursive Call)문제를 더 작은 문제로 나누고, 이를 해결하기 위해 자기 자신 호출시간 복잡도재귀의 시간복잡도를 구하는 건 어려움. 수학적으로 접근해 엄밀히 구하려면, 실용성이 떨어짐∴ 대략적으로 계산해야 함📌 시간 복잡도 = 재귀 함수 호출 수 X 재귀 함수 당 시간..
139. Word Break
·
PS/LeetCode
📜 문제문자열 `s`, 단어 사전 `wordDict`가 주어짐wordDict에 있는 단어들로 s를 분할할 수 있는지 확인 (≒ 단어들로 s를 만들 수 있는지 확인)wordDict내의 단어들은 여러번 재사용 가능생각 하기40분 정도 고민하다가 답을 봤다.나는 단어 사전에 있는 단어들의 첫글자를 key로 하여 Map에 저장 하여 접근하도록 했다.예시) wordDict =[cats, sand, dog, and, cat]Map: [a - and], [c - cat, cats], [d - dog ], [s- sand]dfs를 이용하여 접근했지만, 시간초과에 걸려서 틀렸다. (∵ 중복 탐색)이 문제를 풀기 위해선, 이전 값의 결과를 저장해 중복 탐색을 하지 않도록 `memoization`을 이용해야한다.`DFS`..