본문 바로가기

알고리즘31

[백준] 2957 이진 탐색 트리 풀이 Java, BST, TreeSet BST(Binary Search Tree, 이진 탐색 트리) 이진 탐색 트리는 모든 노드가 많아야 2개의 자식 노드를 가지고 있는 트리이고, 각 노드에는 수가 하나씩 쓰여있다. 만약 어떤 노드에 쓰여 있는 수가 X라면, 그 노드의 왼쪽 서브트리에는 X보다 작은 수, 오른쪽 서브트리에는 X보다 큰 수만 저장되어 있어야 한다. 배열의 첫 번째 수를 루트 노드로 놓고, 다른 나머지 수들을 순서대로 삽입하면서 이진 탐색 트리를 만들려고 한다. 즉, 첫 번째 수를 제외한 모든 수에 대해서 insert(X,root)를 실행하는 것과 같다. 이진 탐색 트리에 삽입하는 함수는 다음과 같다. insert(number X, node N) 카운터 C값을 1 증가시킨다 if X가 노드 N에 있는 수보다 작다면 if N의 왼쪽.. 2022. 7. 18.
[백준] 2637 장난감 조립 풀이 Java, 위상 정렬 2637번: 장난감 조립 첫째 줄에는 자연수 N(3 ≤ N ≤ 100)이 주어지는데, 1부터 N-1까지는 기본 부품이나 중간 부품의 번호를 나타내고, N은 완제품의 번호를 나타낸다. 그리고 그 다음 줄에는 자연수 M(3 ≤ M ≤ 100)이 주 www.acmicpc.net ★ 위상 정렬(Topological Sort)을 잘 모르면 아래 게시글을 보고 오는걸 추천드립니다. 위상 정렬(Topological sort) BFS,DFS 비순환 방향 그래프 DAG (Directed Acyclic Graph) 사이클이 없는 방향 그래프 위상 정렬(Topological sort) 모든 간선(u,v)에 대해 먼저 오는 정점 순서로 정렬이 된다. (u가 v보다 먼저 오면 u->v) 그래프가 DA.. sunrise-min... 2022. 7. 18.
[백준] 2252 줄 세우기 풀이 Java, 위상 정렬 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net ★ 위상 정렬(Topological Sort)를 잘 모르면 아래 게시글을 보고 오는걸 추천드립니다. 위상 정렬(Topological sort) BFS,DFS 비순환 방향 그래프 DAG (Directed Acyclic Graph) 사이클이 없는 방향 그래프 위상 정렬(Topological sort) 모든 간선(u,v)에 대해 먼저 오는 정점 순서로 정렬이 된다. (u가 v보다 먼저 오면 u->v) 그래프가 DA.. sun.. 2022. 7. 17.
위상 정렬(Topological sort) BFS,DFS 비순환 방향 그래프 DAG (Directed Acyclic Graph) 사이클이 없는 방향 그래프 위상 정렬(Topological sort) 모든 간선(u,v)에 대해 먼저 오는 정점 순서로 정렬이 된다. (u가 v보다 먼저 오면 u->v) 그래프가 DAG인 경우만 가능한데 그 이유는 그래프에 사이클이 있으면 u가 먼저인지 v가 먼저인지 알 수 없기 때문이다. 대표적인 예로 대학교 선수과목이 있다. 위 그림을 보면 하나의 DAG에서 하나 이상의 위상정렬 결과가 나올 수 있으며, 왼쪽에서 오른쪽으로 향하는 단방향이다. 구현은 BFS(in-degree), DFS 둘 다 가능하다. * 참고 - 진입차수 (Indegree) : 특정 노드로 들어오는 간선의 개수 - 진출차수 (Outdegree) : 특정 노드에서.. 2022. 7. 17.
[HackerRank]Fraudulent Activity Notifications(Sort) 풀이 Java Fraudulent Activity Notifications | HackerRank Print the number of times a customer receives a notification www.hackerrank.com Sorting문제인데 어려웠음.. Counting Sort를 사용하지 않으면 풀 수 없는 문제이다. 나를 포함한 다수의 사람들이 기본 정렬을 사용했다가 Timeout이 발생했다. Count sort는 아래 블로그에 굉장히 정리가 잘 되어 있으니 참고하면 좋다. https://bowbowbow.tistory.com/8 Counting Sort : 계수 정렬 Counting Sort Counting Sort Counting Sort 소개 정렬 과정 애니메이션 예시 구현 정리 끝 소개 .. 2022. 7. 17.
Tree: Height of a Binary Tree 풀이 Java (Binary Tree 높이 구하기) Tree: Height of a Binary Tree | HackerRank Given a binary tree, print its height. www.hackerrank.com 문제 The height of a binary tree is the number of edges between the tree's root and its furthest leaf. Binary Tree의 높이를 구해라. Output Format Your function should return a single integer denoting the height of the binary tree. Sample Input 풀이 point 1) 각 노드별 높이를 저장하는 1차원 배열을 만든다 point 2) Stack사용 (Queue.. 2022. 7. 15.
반응형