문제
https://www.acmicpc.net/problem/2606
풀이(23분)
import java.io.*;
import java.util.*;
public class Main{
static int n;
static int m;
static int[][] arr;
static boolean[] visited;
static Queue<Integer> queue = new LinkedList<>();
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(br.readLine());
m = Integer.parseInt(br.readLine());
arr = new int[n][n];
visited = new boolean[n];
visited[0] = true;
for(int i = 0; i < m; i++){
st = new StringTokenizer(br.readLine());
int first = Integer.parseInt(st.nextToken()) - 1;
int second = Integer.parseInt(st.nextToken()) - 1;
arr[first][second] = 1;
arr[second][first] = 1;
}
int answer = 0;
for(int i = 0; i < n; i++){
if(arr[0][i] == 1){
queue.add(i);
answer++;
visited[i] = true;
}
}
while(!queue.isEmpty()){
int temp = queue.poll();
for(int i = 0; i < n; i++){
if(arr[temp][i] == 1){
if(!visited[i]){
queue.add(i);
answer++;
visited[i] = true;
}
}
}
}
System.out.println(answer);
}
}
문제자체는 1차원 방문 배열을 활용하여 방문처리를 하며 BFS로 문제를 해결하는 단순한 문제이다.
하지만 23분이라는 시간을 쓴 것에 있어서는 백준 제출칸을 그대로 이용해 풀어보려는 연습을 하고 있고, 이는 출력에 대한 결과가 제공되지 않기에 visited [0]을 먼저 true로 바꿔줘야 하는 부분에서 긴 시간이 걸렸다.
꼼꼼히 풀고 확인하는 연습을 해야될 것 같다.
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 1051번. 숫자 정사각형(JAVA) (0) | 2025.01.07 |
---|---|
[백준] 15649번. N과 M (1)(JAVA) (0) | 2025.01.04 |
[백준] 3584번. 가장 가까운 공통 조상(JAVA) (0) | 2025.01.02 |
[백준] 11725번. 트리의 부모 찾기(JAVA) (0) | 2025.01.02 |
[백준] 4386번. 별자리 만들기(JAVA) (0) | 2024.12.16 |