Algorithm/백준 알고리즘
백준_5567 결혼식(자바) / 구현
미스터로즈
2021. 5. 12. 08:56
시간 & 메모리 제한
문제
입력 & 출력
구현을 이용한 문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Back_5567 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int M = Integer.parseInt(br.readLine());
StringTokenizer st;
//친구간의 관계 표시를 위한 배열
boolean [][] arr = new boolean[N+1][N+1];
//누가 오는 동기 인지 표시 하기 위한 배열
boolean[] visited = new boolean[N+1];
int ans=0;
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
arr[a][b] = true;
arr[b][a] = true;
}
for (int i = 2; i <=N; i++) {
//친구인 경우
if(arr[1][i]== true) {
if(!visited[i]) {
ans ++;
visited[i]=true;
}
// 친구의 친구인 경우 찾기
for (int j = 2; j <=N; j++) {
if(arr[i][j]==true && !visited[j]) {
ans ++;
visited[j]=true;
}
}
}
}
System.out.println(ans);
}
}
- 이 문제를 읽었을 때, 있는 그대로 풀면 될꺼 같다는 생각이 들었습니다.
- 물론 이 문제를 bfs로 풀 수 있다고 생각 했지만, 가장 먼저 든 생각으로 문제를 풀었습니다.
- for문을 통해서 1차적으로 나와 친구인 관계를 찾았고, 그 친구고 아직 방문하지 않은 친구이면, 방문 처리 및 카운트를 해줬습니다.
- 친구에 값을 아는 상태에서 친구의 친구를 찾기 위해서 for문을 한번 더 돌렸습니다.