본문 바로가기

알고리즘106

[알고리즘] DFS & BFS 목차 DFS (깊이 우선 탐색) DFS (Depth-First Search)는 깊이 우선 탐색이라고도 하며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS는 재귀나 스택을 이용해서 구현을 한다. DFS를 구현할 때 어떤 노드를 방문했었는지 꼭 검사를 해야 한다. 왜냐하면 이를 검사하지 않을 경우 무한루프에 빠질 수 있기 때문이다. 보통 모든 노드를 방문하고자 할 때, DFS를 이용한다. 하지만, 검색 속도는 보통 BFS보다 느리다. 구현 방법 : 1. 탐색 시작 노드를 스택에 삽입하고, 방문 처리한다. 2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리하고, 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 3. 위의 1번.. 2022. 5. 23.
[알고리즘] 플로이드 와샬 (Floyd Warshall) 목차 플로이드 와샬이란? 다익스트라 알고리즘은 하나의 노드에서 출발했을 때 다른 모든 노드로의 최단 경로를 구하는 알고리즘이다. 하지만 플로이드 와샬 알고리즘은 모든 노드에서 모든 노드로의 최단 경로를 구하는 알고리즘이다. 그리고 다익스트라 알고리즘은 가장 적은 비용을 하나씩 선택을 해서 그 적은 비용을 가지는 노드의 인접한 노드들로 가는 비용을 하나씩 계산하는 방식이었다면 플로이드 와샬 같은 경우는 거쳐가는 노드를 기준으로 알고리즘을 수행한다는 특징이 있다. 추가로 플로이드 와샬은 다이나믹 프로그래밍 기법을 사용한 알고리즘이고, 인접 행렬을 이용하여 각 노드 간 최소의 비용을 계산한다. 플로이드 와샬 예시 위와 같은 그래프가 있다고 가정해 보겠다. 그리고 각각의 노드에서 다른 노드로 가는 비용을 2차원.. 2022. 5. 21.
[백준] 10156번 : 과자 – JAVA [자바] https://www.acmicpc.net/problem/10156 10156번: 과자 첫 번째 줄에는 과자 한 개의 가격 K, 사려고 하는 과자의 개수 N, 현재 동수가 가진 돈 M이 각각 공백을 사이에 두고 주어진다. 단, K, N은 1,000 이하의 양의 정수이고, M은 10만 이하의 양의 정수이 www.acmicpc.net 문제 문제 풀이 백준 10156번 과자는 브론즈 4 난이도의 수학 문제이다. 이 문제에서는 과자 1개의 가격 k, 사려고 하는 과자의 개수 n, 그리고 현재 가진 돈 m이 주어진다. 이때 부족한 돈만큼 부모님한테 받는데 부모님한테 받아야 하는 돈의 액수를 출력하면 된다. 만약에 돈을 부모님한테 받을 필요가 없으면 0을 출력하면 된다. 우선 총금액인 price = k × n을 구.. 2022. 4. 28.
[백준] 10797번 : 10부제 – JAVA [자바] https://www.acmicpc.net/problem/10797 10797번: 10부제 서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 www.acmicpc.net 문제 문제 풀이 백준 10797번 10부제는 브론즈 4 난이도의 구현 문제이다. 이 문제는 서울시에서 시행하는 10부제에 대한 문제이다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 같으면 해당 자동차의 운행을 금지하는 정책이다. 이 문제에서는 날짜의 일의 자리 숫자 n이 주어지고 그다음 줄에 5대의 자동차 번호의 일의 자리 숫자가 주어진다. 그리고 이 5개의 숫자 중.. 2022. 4. 28.
반응형