🚌 2024년 11월 4일~ 2024년 11월 11일까지의 주제는 자료구조와 알고리즘이다.
💡 공통으로 준비한 질문
1️⃣ 첫번째 접은 글은 내 말로 풀어쓴 정답
2️⃣ 두번째 접은 글은 해석 또는 공부한 내용 또는 추가적으로 궁금한 내용
- 📗 자료 구조 편 -
1. BST (Binary Search Tree)와 성능 개선 방법에 대해 설명해주세요.
- 이진 탐색 트리란 ?
- 이진 탐색 : 탐색에 소요되는 시간 복잡도는 O(logN), 삽입, 삭제 불가능
- 연결 리스트 : 삽입, 삭제의 시간 복잡도는 O(1), 탐색 시간 복잡도 O(N)
- 이 두 가지를 합하여 장점을 모두 얻는 것
- 이진 탐색 트리의 특징
- 각 노드의 자식이 2개 이하이다.
- 각 노드의 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 크다.
- 중복된 노드가 없어야 한다.
- 검색 목적의 자료구조인데 검색 속도를 느리게 할 필요가 없고(노드에 count 값을 가지게 하여 처리하는 것이 효율적이다)
- 중위 순회(왼 -> 오) 방식을 사용한다.
- 성능을 개선하는 방법으로는 양쪽 높이의 균형을 맞추는 것이다.
이진탐색트리(Binary Search Tree) · ratsgo's blog
이번 글에서는 자료구조의 일종인 이진탐색트리(Binary Search Tree)에 대해 살펴보도록 하겠습니다. 이 글은 고려대 김선욱 교수님, 그리고 역시 같은 대학의 김황남 교수님 강의와 위키피디아를 정
ratsgo.github.io
[자료구조] 이진 탐색 트리 (BST, Binary Search Tree)
목차이진 탐색 트리 (BST, Binary Search Tree)이진 탐색 트리란 정렬된 이진트리로써 다음과 같은 속성을 가지고 있습니다.노드의 왼쪽 하위 트리에는 노드의 키보다 작은 키가있는 노드 만 포함됩니
yoongrammer.tistory.com
2. AVL 트리는 무엇인가요?
- AVL 트리란?
- 스스로 균형을 잡는 이진 탐색 트리이다.
- 시간복잡도는 트리의 높이인 h에 따라 O(h)가 된다.
- 한쪽으로 치우친 편향 이진트리가 되면 트리의 높이가 높아지기 때문에 높이 균형을 유지하기 위해 사용한다.
- AVL 트리의 특징
- 이진 탐색 트리의 속성을 가진다.
- 왼쪽, 오른쪽 서브 트리의 높이 차이가 최대 1이다.
- 어떤 시점에서 높이 차이가 1보다 커지면 회전을 통해 균형을 잡는다.
- 높이를 logN으로 유지하기 때문에 삽입, 검색, 삭제의 시간 복잡도는 O(logN)이다.
[자료구조] AVL 트리(Tree)
목차AVL 트리(Tree) 개념 및 구현AVL 트리는 스스로 균형을 잡는 이진 탐색 트리입니다. 트리의 높이가 h일 때 이진 탐색 트리의 시간 복잡도는 O(h)입니다.한쪽으로 치우친 편향 이진트리가 되면 트
yoongrammer.tistory.com
AVL 트리는?
AVL Tree 🌲 간단하게 말해서 이진 탐색 트리의 단점을 극복할 수 있는 자료구조이다. 왜 이름이 AVL이냐면 발명자의 이름인 Adelson-Velsky and Landis에서 따와서 그렇다. 위 그림은 여러 시간 복잡도를
velog.io
3. 트리와 그래프의 차이에 대해서 설명할 수 있나요?
- 트리란?
- 값을 가진 노드와 이 노드들을 연결해주는 간선으로 이루어져 있다.
- 그래프란?
- 노드와 노드 간을 연결하는 간선으로 이루어져 있다.
- 둘의 차이점은
- 그래프는 방향과 무방향 즉, 양방향의 경로를 가질 수 있지만 트리는 방향만 가질 수 있다.
- 그래프는 순환, 비순환, 자기순환의 사이클을 가지지만 트리는 비순환 사이클을 가진다.
- 그래프는 루트 노드가 없고 트리는 한개의 루트가 존재한다.
- 트리는 1개의 부모노드(루트 제외)를 가진다.
[자료구조] 그래프와 트리(Graph, Tree)
트리와 그래프 그래프(Graph) 그래프란 그래프는 노드(하나의 점)와 노드 간을 연결하는 간선으로 구성된 자료 구조이다. 이를 통해 연결된 노드 간의 관계를 표현할 수 있는 자료구조이다. 그래
bigsong.tistory.com
[자료구조] 트리와 그래프의 차이점
위키백과에 따르면 그래프의 정의는 아래와 같다.그래프는 vertex(정점)와 edge(간선)로 구성된 한정된 자료구조를 말한다.컴퓨터 시스템에 그래프를 저장하는 방법은 여러가지가 있다. 이론적으
velog.io
[자료구조] 그래프와 트리
그래프 인물 관계도, 먹이사슬, 지하철 노선도, 전국 도로망 등 일상 생활에서 연결 관계를 표현하거나 이해하는데 매우 많이 활용된다. 그래프의 구성 요소 ⁃ 정점 (Node, Vertex) 그림에서 놀이기
sanhan.tistory.com
tech-interview/contents/images/graph-vs-tree.png at master · WeareSoft/tech-interview
:loudspeaker:🙍 tech interview. Contribute to WeareSoft/tech-interview development by creating an account on GitHub.
github.com
4. 이진트리의 전위 / 중위 / 후위 순회가 무엇인가요? 설명하고, 자신이 직무 언어로 순회 결과를 코딩해보세요.
- 전위 순회란?
- 루트 노드를 먼저 탐색하고, 자식 노드를 탐색하는 방식
- 중위 순회란?
- 왼쪽 자식 노드를 탐색하고, 루트 노드를 탐색하고, 오른쪽 자식 노드를 탐색하는 방식
- 후위 순회란?
- 왼쪽 자식 노드를 탐색하고, 오른쪽 자식 노드를 탐색하고, 루트 노드를 탐색하는 방식
- 소스 코드
- 먼저 선언해줘야 하는 트리 노드
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
- 전위 순회
void preOrderTraversal(TreeNode root) {
if (root == null) return;
// 루트 노드를 방문
System.out.print(root.val + " ");
// 왼쪽 서브트리를 전위 순회
preOrderTraversal(root.left);
// 오른쪽 서브트리를 전위 순회
preOrderTraversal(root.right);
}
- 중위 순회
void inOrderTraversal(TreeNode root) {
if (root == null) return;
// 왼쪽 서브트리를 중위 순회
inOrderTraversal(root.left);
// 루트 노드를 방문
System.out.print(root.val + " ");
// 오른쪽 서브트리를 중위 순회
inOrderTraversal(root.right);
}
- 후위 순회
void postOrderTraversal(TreeNode root) {
if (root == null) return;
// 왼쪽 서브트리를 후위 순회
postOrderTraversal(root.left);
// 오른쪽 서브트리를 후위 순회
postOrderTraversal(root.right);
// 루트 노드를 방문
System.out.print(root.val + " ");
}
- 메인에서 출력
public class Main {
public static void main(String[] args) {
// 이진 트리 생성
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
// 전위 순회 출력
System.out.print("Pre-order Traversal: ");
preOrderTraversal(root);
System.out.println();
// 중위 순회 출력
System.out.print("In-order Traversal: ");
inOrderTraversal(root);
System.out.println();
// 후위 순회 출력
System.out.print("Post-order Traversal: ");
postOrderTraversal(root);
System.out.println();
}
}
/* 출력 결과
Pre-order Traversal: 1 2 4 5 3
In-order Traversal: 4 2 5 1 3
Post-order Traversal: 4 5 2 3 1
*/
이진 트리 순회: 전위, 중위, 후위, 레벨
이진 트리(Binary Tree)를 탐색하는 방법에는 크게 다음의 4가지가 있다. * 전위순회(Preorder Traversal) * 중위순회(Inorder Traversal) * 후위순회(Postorder Traversal) * 레벨순회(Levelorder Traversal) 또는 BFS(Breadth-Fir
www.jiwon.me
[Algorithm] 이진 탐색 트리 (Binary Search Tree, BST) + 전위 중위 후위 순회
인트로 그래프의 탐색 방법으로 DFS와 BFS가 대표적이다. 트리는 특정 조건을 만족하는 그래프이다. 따라서 트리에 BFS와 DFS 탐색 알고리즘을 적용할 수 있다. 본 포스팅에선 DFS에 기반한 이진 트
kangworld.tistory.com
[Java] 트리 Tree 2 - 이진 트리의 순회(전위, 중위, 후위, 반복, 레벨) / 구현
4. 이진트리의 순회 이진트리에 속하는 모드 노드를 한 번씩 방문하여 노드가 가지고 있는 데이터를 목적에 맞게 처리하는 것을 의미 이진트리를 순회하는 표준적인 방법에는 전위, 중위, 후의
minhamina.tistory.com
[자료구조] Tree 순회 방법 - 전위/중위/후위 순회 & Java 예시 코드
자료 구조 중 트리가 있다. 트리 구조를 순회하는 방법에는 세 가지 방법이 있다. 전위 순회(Pre-order) 중위 순회(In-order) 후위 순회(Post-order) 이러한 순회 방법은 트리 내의 모든 노드를 방문하는
hoehen-flug.tistory.com
- 📘 알고리즘 편 -
1. 선택 정렬(Selection Sort)에 대해 설명해주세요.
- 선택 정렬이란?
- 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘이다.
- 해당 자리를 선택하고 그 자리에 오는 값을 찾는 것이다.
- 과정은
- 주어진 배열 중에 최소값을 찾는다.
- 그 값을 맨 앞에 위치한 값과 교체한다.
- 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체한다.
- 시간 복잡도는 O(N²)이다.
- 장점으로는 알고리즘이 단순하다. 다른 메모리 공간을 필요로 하지 않는다.
- 단점으로는 시간복잡도와 불안정 정렬이란 것이다.
선택 정렬(Selection Sort) | 👨🏻💻 Tech Interview
선택 정렬(Selection Sort) Goal Selection Sort에 대해 설명할 수 있다. Selection Sort 과정에 대해 설명할 수 있다. Selection Sort을 구현할 수 있다. Selection Sort의 시간복잡도와 공간복잡도를 계산할 수 있다. Ab
gyoogle.dev
[알고리즘] 선택 정렬(selection sort)이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
2. 삽입 정렬(Injection Sort)에 대해 설명해주세요.
- 삽입 정렬이란?
- 2번째 원소부터 시작하여 그 앞(왼쪽)의 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 삽입하여 정렬하는 알고리즘
- 과정은
- 정렬은 2번째 위치의 값을 temp에 저장한다.
- temp와 이전에 있는 원소들과 비교하여 삽입해나간다.
- '1'번으로 돌아가 다음 위치의 값을 temp에 저장하고, 반복한다.
- 시간복잡도는 O(N²)이다. 하지만 만약 정렬이 다 되어있는 경우 O(N)이 된다. 현실적으로 자료를 하나씩 삽입/제거 하는 경우에는 최고가 된다. 탐색을 제외한 오버헤드가 매우 적기 때문이다.
- 장점은 알고리즘이 단순하고, 다른 메모리 공간이 필요로 하지 않는다. 안정 정렬이다.
- 단점은 시간 복잡도와 배열이 길어질수록 비효율적이다.
삽입 정렬(Insertion Sort) | 👨🏻💻 Tech Interview
삽입 정렬(Insertion Sort) Goal Insertion Sort에 대해 설명할 수 있다. Insertion Sort 과정에 대해 설명할 수 있다. Insertion Sort을 구현할 수 있다. Insertion Sort의 시간복잡도와 공간복잡도를 계산할 수 있다. In
gyoogle.dev
[알고리즘] 삽입 정렬(insertion sort)이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
[정렬 알고리즘] 01 삽입 정렬(Insertion Sort)이론 및 구현
1. 삽입 정렬 개념 손안의 카드를 정렬하는 방법과 유사(새로운 카드를 기존의 정렬된 카드 사이에 올바른 위치에 삽입) 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과
rninche01.tistory.com
tech-interview-study/contents/algorithm.md at master · devham76/tech-interview-study
기술 면접 스터디를 기반으로 CS기본 개념을 정리하는 저장소입니다. Contribute to devham76/tech-interview-study development by creating an account on GitHub.
github.com
3. 병합 정렬(Merge Sort)에 대해 설명해주세요.
- 병합 정렬이란?
- 분할 정복 방법을 통해 구현하는 빠른 정렬 방식이다.
- 퀵 소트와의 차이점은 퀵 정렬은 피벗을 통해 정렬 후 영역을 쪼개지만, 병합 정렬은 영역을 쪼갤 수 있는 만큼 쪼갠 후 정렬을 한다.
- LinkedList의 정렬이 필요할 때 사용하면 효율적이다.
병합 정렬(Merge Sort) | 👨🏻💻 Tech Interview
병합 정렬(Merge Sort) 합병 정렬이라고도 부르며, 분할 정복 방법을 통해 구현 분할 정복이란? 큰 문제를 작은 문제 단위로 쪼개면서 해결해나가는 방식 빠른 정렬로 분류되며, 퀵소트와 함께 많이
gyoogle.dev
[알고리즘] 합병 정렬(merge sort)이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
알고리즘 합병정렬(Merge sort) 그림으로 쉽게 이해하기
알고리즘 합병정렬(Merge sort) 그림으로 쉽게 이해하기 안녕하세요. 로스윗의 코딩캠프입니다. 오늘은 알고리즘 정렬 중에서 합병정렬(Merge sort)에 대한 포스팅을 진행하겠습니다. 정말 어렵지 않
rosweet-ai.tistory.com
[알고리즘] 병합 정렬 - Merge Sort (Python, Java)
Engineering Blog by Dale Seo
www.daleseo.com
4. 허프만 코딩에 대해 설명해주세요.
- 허프만 코딩이란?
- 데이터 문자의 등장 빈도수에 따라서 다른 길이의 부호화를 사용하는 알고리즘이다.
- 즉, 데이터를 효율적으로 압축(이진 코드로 변환 시 적은 메모리 사용)하기 위한 방법을 뜻한다.
허프만 코딩(Huffman coding)
허프만 부호화 또는 허프만 코딩(Huffman coding)은 입력 파일의 문자 빈도 수를 가지고 최소힙을 이용하여 파일을 압축하는 과정이다. 허프만 코드(이진코드)는 Unix에서 파일압축에 사용되고, JPEG
velog.io
탐욕 알고리즘과 허프만 코딩 구현 방법 | 요즘IT
탐욕 알고리즘(Greedy Algorithm)은 각 단계에서 최적의 해결책을 선택하여 복잡한 문제를 간단하고 빠르게 해결하는 알고리즘을 말합니다. 이번 글에서는 탐욕 알고리즘의 기본 개념과 작동 원리를
yozm.wishket.com
허프만 코딩(Huffman Coding)
허프만 코딩이란?접두부인코딩 과정디코딩 과정데이터 문자의 등장 비도수에 따라서 다른 길이의 부호화를 사용하는 알고리즘 입니다.허프만 코딩은 각 문자에 부여된 이진 코드가 접두부가
velog.io
[허프만] 허프만 코딩 원리와 구현
안녕하세요. 오랜만에 포스팅을 합니다. 욕심쟁이 알고리즘 종류의 하나인 허프만 코딩에 대해 알아보겠습니다. 허프만 코딩 허프만 코딩은 문자의 빈도 또는 확률정보를 이용해 통계적 압축하
playground10.tistory.com
'개인 공부 > TIL' 카테고리의 다른 글
[ TIL - 면접 ] 자소서 면접 대비 공부 3편 - JPA - (0) | 2024.11.13 |
---|---|
[ TIL - CS ] 면접을 위한 CS 공부 5편 - 데이터베이스 - (0) | 2024.11.11 |
[ TIL - 면접 ] 자소서 질문 대비 공부 2편 - 스프링 Bean Scope 편 - (0) | 2024.11.06 |
[ TIL - CS ] 면접을 위한 CS 공부 3편 - 자료구조와 알고리즘 - (0) | 2024.11.04 |
[ TIL - CS ] 면접을 위한 CS 공부 2편 - 운영체제 - (0) | 2024.11.01 |