알고리즘 Flashcards
알고리즘 관련 개발자 면접 질문 정리
재귀란 무엇인가?
어떤 문제를 해결하기 위해 자신을 반복 호출하는 알고리즘 기술을 의미합니다.
재귀의 요소 중 기저 사례란 무엇인가?
재귀 호출을 멈추기 위한 조건으로, 더 이상 문제를 작은 문제로 나눌 수 없을 때 사용합니다. 기저 사례가 충족되면 함수는 더 이상 자신을 호출하지 않고 결과를 반환합니다.
재귀의 요소 중 재귀 사례란 무엇인가?
문제를 더 작은 문제로 나누고, 그 작은 문제를 해결하기 위해 다시 자기 자신을 호출하는 부분입니다.
DFS / BFS가 무엇인가?
두 알고리즘 모두 그래프 탐색 알고리즘으로 그래프나 트리 구조를 탐색할 때 사용됩니다. 특정 노드를 방문하고 연결된 노드들을 탐색하며, 모든 노드를 방문할 수 있습니다. 하지만 탐색 순서와 방식에서 차이가 있습니다.
DFS란 무엇인가?
깊이 우선 탐색으로 한 노드에서 출발하여 가능한 한 깊게 탐색한 후, 더 이상 갈 곳이 없으면 다시 돌아와 다른 경로를 탐색하는 방식입니다. 주로 재귀나 스택을 사용하여 구현합니다. 그리고 모든 경로를 탐색하여 해결책을 찾을 때 유용합니다.
BFS란 무엇인가?
너비 우선 탐색으로 루트 노드에서 시작하여 인접한 노드를 먼저 탐색하고, 그 다음 레벨의 노드들을 탐색하는 방식입니다. 주로 큐 자료구조를 사용하여 구현합니다. 그리고 최단 경로를 찾을 때 유용합니다.
버블 정렬을 설명하라.
인접한 두 원소를 비교하여 순서가 잘못된 경우 서로 교환하는 방식으로 작동합니다.
선택 정렬을 설명하라.
리스트에서 최소 또는 최대 원소를 찾아 리스트의 첫 번째 원소와 교환하는 방식으로 작동합니다.
삽입 정렬을 설명하라.
배열의 요소들을 하나씩 차례대로 정렬된 부분과 비교하여 적절한 위치에 삽입하는 방식으로 작동합니다.
선형 검색을 설명하라.
배열이나 리스트의 첫 번째 요소부터 마지막 요소까지 차례대로 확인하여 원하는 값을 찾는 방식입니다. 검색하려는 값이 배열에 존재하는지 확인하거나 그 위치를 반환합니다.
이진 검색을 설하라.
정렬된 배열에서 특정 값을 찾는 효율적인 알고리즘입니다. 배열을 반씩 나누어 검색하는 방식으로, 선형 검색보다 훨씬 빠른 시간 복잡도를 갖습니다.
A* 알고리즘을 설명하라.
그래프 탐색 알고리즘 중 하나로, 특히 최단 경로를 찾는 데 매우 효율적입니다. A* 알고리즘은 다익스트라 알고리즘과 유사하지만, 휴리스틱 함수를 사용하여 탐색 공간을 줄임으로써 더 효율적으로 동작합니다.
다익스트라 알고리즘과 A* 알고리즘의 차이는 무엇인가?
다익스트라 알고리즘은 시작 노드에서 모든 노드까지의 최단 경로를 찾으며 휴리스틱 함수를 사용하지 않습니다. 그리고 모든 가능한 경로를 동일한 방식으로 탐색합니다. A* 알고리즘은 시작 노드에서 목표 노드까지의 최단 경로를 찾으며 휴리스틱 함수를 사용하여 탐색을 더 효율적으로 만듭니다. 그리고 목표 지점에 가까운 경로를 우선적으로 탐색하여 탐색 공간을 줄입니다.
객체지향 프로그래밍이란 무엇인가?
프로그래밍 패러다임 중 하나로, 프로그램을 객체들의 집합으로 구성하여 개발하는 방법론입니다.
객체란 무엇인가?
데이터와 이를 처리하는 메소드를 함께 포함하는 하나의 단위입니다.