Algorithms 13

Java 알고리즘 DFS와 BFS 완벽 정리

오늘은 Java 알고리즘에서 빼먹을 수 없는 DFS와 BFS에 대해 알아보려고 합니다. DFS는 Depth First Search의 약자로 깊이 우선 탐색을 말하고, BFS는 Breadth First Search의 약자로 너비 우선 탐색을 말합니다. 이 둘은 그래프 자료구조에서 완전 탐색을 수행하는 탐색 기법입니다😊 개요 앞서 말씀드린 그래프를 탐색하기 위한 대표적인 알고리즘 DFS, BFS를 이해하기 위해서는 스택(Stack), 큐(Queue), 재귀(Recursive)를 먼저 알아야 합니다. 스택과 재귀를 모르신다면 링크를 클릭해서 선수 학습을 해주세요😅 재귀 함수와 스택 프레임 코딩 테스트를 준비하면서 완전탐색, DFS, Back tracking 등의 알고리즘 개념을 접하게 되고, 자연스레 스택 프..

Algorithms 2022.12.21

Java 피보나치(Fibonacci) 수열 제대로 풀기

오늘은 알고리즘 단골 문제인 피보나치 수열 풀이법에 대해 알아보려고 합니다. 피보나치 수열은 면접 현장에서 손 코딩으로 배열 또는 재귀 함수로 풀어보고 성능을 물어보기도 하기 때문에, 이번 포스팅을 통해 정확히 알고 가시면 좋을 것 같습니다😄 피보나치(Fibonacci)📘 수학에서 피보나치 수는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열을 일컫습니다. 예시로 5는 1 1 2 3 5로 표현이 되겠네요. 이런 피보나치 수열을 푸는 방법은 앞서 말씀드린 것처럼 배열로 푸는 방식과 재귀 함수로 푸는 방식으로 나뉩니다. 사실 배열로 푸는 방식이 성능면에서도 좋고 풀이 방법도 간단하지만, 재귀함수로 풀어보라는 회사도 많기 때문에 두 가지 풀이 방법을 모두 숙지하시는 게 좋습니다. 성..

Algorithms 2022.12.16

재귀 함수와 스택 프레임

코딩 테스트를 준비하면서 완전탐색, DFS, Back tracking 등의 알고리즘 개념을 접하게 되고, 자연스레 스택 프레임(Stack frame)도 접하게 되었습니다. 스택 프레임은 알고리즘 문제에 자주 출시되기 때문에, 이번 기회에 개념을 정확히 알고 넘어가시면 좋을 것 같아요😊 스택 프레임📗 스택 프레임이란 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개 변수가 저장되는 영역입니다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다. 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소 값, 함수에서 선언된 지역 변수 등이 저장됩니다. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임(stack fra..

Algorithms 2022.12.15