baekjoon/Graph_Search

백준 1260번 : DFS와 BFS 자바

Meluu_ 2024. 1. 15. 21:52

백준 1260번

 

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 문제를 풀어볼 예정이다.