본문은 다양한 알고리즘과 그 알고리즘을 활용하여 여러 문제를 해결하는 방법에 대해 논의합니다. 먼저, 다양한 문제의 서브루틴으로 사용될 수 있는 회문 검사 알고리즘으로 시작합니다. 이 알고리즘은 문자열의 시작과 끝에서 문자를 비교하여 문자열이 회문인지 확인합니다. 알고리즘의 다양성을 높이기 위해 최대 하나의 문자를 삭제할 수 있는 경우를 처리하는 추가 매개변수를 추가할 수 있습니다. 이는 LeetCode 문제 680의 해결책에서 보여줍니다.
그런 다음, 면접 문제에서 일반적으로 사용되는 깊이 우선 탐색(DFS) 및 너비 우선 탐색(BFS) 알고리즘으로 넘어갑니다. DFS 문제의 예로는 '1'이 육지이고 '0'이 물인 행렬에서 섬의 개수 또는 가장 큰 섬을 찾는 것이 있습니다. 해결책은 DFS를 사용하여 행렬을 탐색하고 섬의 개수 또는 가장 큰 섬의 크기를 계산하는 것을 포함합니다.
또 다른 DFS 문제의 예로는 숫자 문자열에 이진 연산자를 도입하여 특정 목표 숫자로 계산되는 모든 식을 찾는 것입니다. 이는 LeetCode 문제 282의 해결책에서 보여줍니다. 해결책은 DFS를 사용하여 모든 가능한 식을 생성하고 그것들이 목표 숫자로 계산되는지 확인하는 것을 포함합니다. 이 알고리즘은 재귀를 사용하여 모든 가능한 식을 탐색하고 백트래킹을 사용하여 해결책으로 이어지지 않는 가지를 제거합니다.
dev.to
Subroutines: Interview Problem Survey
