250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 안드로이드 Sunflower 스터디
- 2022년 6월 일상
- 안드로이드 sunflower
- 막내의막무가내 프로그래밍
- 막내의막무가내 rxjava
- 막내의막무가내 안드로이드 코틀린
- 프래그먼트
- 막내의막무가내 알고리즘
- 막내의막무가내 코틀린
- Fragment
- 막내의 막무가내 알고리즘
- 부스트코스에이스
- 막내의막무가내 SQL
- 막내의막무가내 안드로이드 에러 해결
- flutter network call
- 부스트코스
- 막내의 막무가내
- 막내의막무가내 목표 및 회고
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 코볼 COBOL
- 안드로이드
- 프로그래머스 알고리즘
- 막내의막무가내
- 막내의막무가내 일상
- 막내의막무가내 플러터 flutter
- 주엽역 생활맥주
- 막무가내
- 막내의막무가내 플러터
- 막내의막무가내 안드로이드
- 주택가 잠실새내
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[알고리즘] 백준 1260 DFS와 BFS -인접리스트 사용 bfs, dfs- 본문
728x90
DFS와 BFS의 기본문제이다.
https://www.acmicpc.net/problem/1260
인접리스트를 사용해서 풀었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static int nodeCount;
public static LinkedList<Integer>[] nodeList;
public static int edgeCount;
public static StringBuilder dfsResult = new StringBuilder();
public static StringBuilder bfsResult = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
//정점개수, 간선개수, 탐색시작노드 세팅
nodeCount = Integer.parseInt(st.nextToken());
edgeCount = Integer.parseInt(st.nextToken());
int startNode = Integer.parseInt(st.nextToken());
//노드리스트 세팅
nodeList = new LinkedList[nodeCount + 1];
boolean[] bfsVisited = new boolean[nodeCount + 1];
boolean[] dfsVisited = new boolean[nodeCount + 1];
for(int i=0; i <= nodeCount; i++){
nodeList[i] = new LinkedList();
}
for (int i=0; i< edgeCount; i++){
st = new StringTokenizer(br.readLine());
int node1 = Integer.parseInt(st.nextToken());
int node2= Integer.parseInt(st.nextToken());
nodeList[node1].add(node2);
nodeList[node2].add(node1);
//리스트 정렬 (점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문)
Collections.sort(nodeList[node1]);
Collections.sort(nodeList[node2]);
}
dfs(startNode, dfsVisited);
bfs(startNode, bfsVisited);
//결과
System.out.println(dfsResult + "\n" + bfsResult);
}
public static void dfs(int currentNode, boolean[] visited){
if(visited[currentNode]){
return;
}
visited[currentNode] = true;
dfsResult.append(currentNode +" ");
for(int nextNode : nodeList[currentNode]){
dfs(nextNode, visited);
}
}
public static void bfs(int currentNode, boolean[] visited){
Queue<Integer> queue = new LinkedList<>();
queue.offer(currentNode);
while (!queue.isEmpty()){
currentNode = queue.poll();
if(visited[currentNode]) continue;
visited[currentNode] = true;
bfsResult.append(currentNode + " ");
queue.addAll(nodeList[currentNode]);
}
}
}
728x90
'알고리즘 > DFS, BFS, 시뮬, 백트래킹' 카테고리의 다른 글
[알고리즘] 백준 2178 미로 탐색 -bfs, dfs- 자바 코틀린 (0) | 2020.03.05 |
---|---|
[알고리즘] 백준 1012 유기농 배추 -dfs, bfs- 자바 코틀린 (0) | 2020.03.04 |
[알고리즘] 백준 2667 단지번호붙이기 -dfs, bfs- 코틀린 자바 (0) | 2020.03.03 |
[알고리즘] 백준 1260 DFS와 BFS -인접행렬 사용 bfs, dfs- (0) | 2020.02.28 |
[알고리즘] 백준 2660 바이러스 -bfs, dfs- (2) | 2020.02.27 |
Comments