본문 바로가기
728x90

프로그래밍28

비선형 자료구조 - 히프(Heap)와 삽입 및 삭제 연산 히프(Heap)란? 히프는 완전 이진트리의 한 종류입니다. 이때 완전 이진 트리란 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있으며 마지막 레벨의 모든 노드는 가능한 한 가장 왼쪽에 있는 구조를 말합니다. 히프는 모든 부모 노드가 그 자식 노드의 값보다 더 큰(혹은 작은) 값을 가지는 구조로 여러 값들 중 최댓값이나 최솟값을 빠르게 찾을 수 있도록 만들어졌습니다. 이러한 히프는 최대 히프와 최소 히프로 나뉩니다. 여기서 최대 히프냐 최소 히프냐에 따라 루트 노드만 탐색하면 최댓값 혹은 최솟값을 O(1)의 시간복잡도로 얻어낼 수 있습니다. 또한, 이 히프 구조는 우선순위 큐를 구현할 때 많이 사용되기도 합니다. 최대 히프 최대 히프란 부모 노드가 항상 자식 노드보다 크거나 같은 구조를 말합니다. 이.. 2023. 10. 19.
[Codeup] 3011번 거품정렬(Bubble Sort) 문제 풀이 링크 - https://codeup.kr/problem.php?id=3011 거품 정렬(Bubble Sort) 첫 줄에 데이터의 개수 n이 입력된다. (2 2023. 9. 7.
자료의 정렬(1) - 버블, 선택, 삽입 정렬 버블 정렬(Bubble Sort) 인접한 원소 간 비교를 통해 교환하는 과정을 반복하는 정렬 방법입니다. 알고리즘 수행 과정에서 키값이 큰 원소가 점점 뒤로 가는 모습이 마치 거품이 점점 커지는 모습과 닮았다는 의미에서 붙여진 이름입니다. 직관적으로 이해할 수 있고 구현이 간단하지만 O(N^2)의 시간복잡도를 가지고 있습니다. for(int i=1; i 2023. 9. 6.
[백준] 4963번 섬의 개수 문제풀이 링크 - https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 정사각형으로 이루어져 있는 섬과 바다 지도가 주어진다. 섬의 개수를 세는 프로그램을 작성하시오. 한 정사각형과 가로, 세로 또는 대각선으로 연결되어 있는 사각형은 걸어갈 수 있는 사각형이다. 두 정사각형이 같은 섬에 있으려면, 한 정사각형에서 다른 정사각형으로 걸어서 갈 수 있는 경로가 있어야 한다. 지도는 바다로 둘러싸여 있으며, 지도 밖으로 나갈 수 없다. dfs를 사용한 문제이.. 2023. 8. 22.
[백준] 11047번 동전0 문제풀이 링크 - https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전의 가치를 오름차순으로 나열하면 첫 번째 동전의 가치는 1이고, 인접한 동전의 가치가 서로 약수와 배수 관계를 이룬다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시.. 2023. 8. 19.
[백준] 11399번 ATM 문제풀이 링크 - https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, .. 2023. 8. 19.
728x90