1260번: DFS와 BFS
첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사
www.acmicpc.net
문제
풀이
DFS와 BFS의 기본적인 문제
보통 DFS는 스택이나 재귀호출
BFS는 큐를 사용한다.
import java.io.*;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static Queue<Integer> card;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
// 자료구조 큐 선언
card = new LinkedList<>();
// 1부터 ~ N까지 삽입
for (int i = 0; i < N; i++) {
card.add(i+1);
}
// 특정 동작
cardAction(card);
System.out.println(card.poll());
}
public static void cardAction(Queue<Integer> queue) {
int swap = 0;
while (queue.size() > 1) {
// 1번 TOP 버리기
queue.poll();
// 2번 TOP을 BOTTOM 밑에 넣기
swap = queue.poll();
queue.add(swap);
}
}
}
알고리즘 배울 땐 의사코드나 자연어로 써져있어서 개념이해만 되었지 실질적인 구현 및 문제 풀이는 처음이라
많이 애먹었다. 이번 문제를 기반으로 DFS 와 BFS 문제를 풀어볼 예정이다.
'baekjoon > Graph_Search' 카테고리의 다른 글
백준 16234번 : 인구 이동 자바 (0) | 2024.06.29 |
---|---|
백준 실버1 숨바꼭질 1697 (0) | 2024.06.26 |
백준 2667번 : 단지번호붙이기 자바 (1) | 2024.01.16 |
백준 2606번 : 바이러스 자바 (0) | 2024.01.16 |
백준 2178번 : 미로탐색 자바 (0) | 2024.01.16 |