[BOJ] 백준 25195. Yes or yes

2024. 2. 26. 07:53· Java/BOJ

문제

https://www.acmicpc.net/problem/25195

 

25195번: Yes or yes

첫째 줄에는 정점의 개수 $N$과 간선의 개수 $M$이 주어진다. ($1 \leq N, M \leq 100\,000$) 이후 $M$줄에 걸쳐서 간선의 정보를 나타내는 두 정수 $u$, $v$ 가 주어진다. 이는 정점 $u$ 에서 정점 $v$ 로 가는

www.acmicpc.net


풀이

 BFS, DFS 문제입니다. 문제의 포인트는 팬클럽 곰곰이를 거치지 않고 더 이상 이동할 수 없는 간선까지 도달할 수 있는가? 입니다.

 

 우선 팬클럽 곰곰이의 정점을 boolean[] gomgom 배열에 저장해두었습니다. 그리고 BFS 탐색시에 gomgom 배열을 체크합니다. 만약 현재의 정점이 gomgom[] 배열의 true 라면, continue를 통해 더 이상 진행하지 못하도록 조건을 걸었습니다. 

 

 위 조건을 피해서 정점의 끝까지 도달했다면 정점의 끝이라는 조건 즉, 해당 정점에 더 이상 간선이 없다는 조건인 list[now].isEmpty() 조건을 통해 return 값을 "yes"로 반환해주었습니다.

 

 위에서의 로직에 해당하지 않는다면, 끝까지 도달하지 못했다는 것임으로 "Yes" 를 반환합니다.

 


소스코드

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class B25195_yesoryes {

    static int N,M;
    static ArrayList<Integer>[] list;
    static boolean[] gomgom;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        M = sc.nextInt();
        list = new ArrayList[N+1];
        gomgom = new boolean[N+1];
        for(int i=0;i<N+1;i++){
            list[i] = new ArrayList<>();
        }
        for(int i = 0;i<M;i++){
            int st = sc.nextInt();
            int ed = sc.nextInt();
            list[st].add(ed);
        }
        int S = sc.nextInt();
        for(int i =0;i<S;i++){
            int num = sc.nextInt();
            gomgom[num] = true;
        }
        System.out.println(bfs());
    }
    static String bfs(){
        Queue<Integer> queue = new LinkedList<>();
        queue.add(1);
        while(!queue.isEmpty()){
            int now = queue.poll();
            if(gomgom[now]) continue;
            if(list[now].isEmpty()) return "yes";
            for(int next : list[now]){
                queue.add(next);
            }
        }
        return "Yes";
    }
}

 

 

 

 

'Java > BOJ' 카테고리의 다른 글

[BOJ] 백준 1806. 부분 합  (0) 2024.03.19
[BOJ] 백준 19951. 태상이의 훈련소 생활  (0) 2024.02.27
[BOJ] 백준 2573. 빙산  (0) 2024.02.22
[BOJ] 백준 11054. 가장 긴 바이토닉 부분 수열  (0) 2024.02.21
[BOJ] 백준 10610. 30  (0) 2024.02.20
'Java/BOJ' 카테고리의 다른 글
  • [BOJ] 백준 1806. 부분 합
  • [BOJ] 백준 19951. 태상이의 훈련소 생활
  • [BOJ] 백준 2573. 빙산
  • [BOJ] 백준 11054. 가장 긴 바이토닉 부분 수열
동구름이
동구름이
동구름동구름이 님의 블로그입니다.
동구름이
동구름
동구름이
전체
오늘
어제
  • 분류 전체보기 (178)
    • Java (63)
      • Java 를 파헤쳐보자 (13)
      • BOJ (45)
      • 프로그래머스 (3)
      • SWEA (1)
      • Java GUI (1)
    • JavaScript (17)
      • JS를 파헤쳐보자 (7)
      • 프로그래머스 (7)
      • JS 학습 정리 (1)
    • Backend (33)
      • Spring (3)
      • HTTP (7)
      • 프로젝트 (10)
      • MySQL (6)
      • Redis (3)
      • Elastic Search (1)
      • 인증, 인가 (3)
    • CS (57)
      • 운영체제 (35)
      • Network (22)
    • Git (2)
    • 개발 관련 이것저것 (2)
    • etc (1)
    • 독서 (0)
    • 사설 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 한양대
  • BOJ
  • 백준
  • OS
  • 자바스크립트
  • 이석복
  • 인프런
  • JCF
  • 네트워크
  • 김영한
  • 프로그래머스
  • 모든 개발자를 위한 HTTP 웹 기본 지식
  • 큐
  • 반효경
  • 구현
  • Java
  • 스택
  • 운영체제
  • 자바
  • 레디스

최근 글

hELLO · Designed By 정상우.v4.2.2
동구름이
[BOJ] 백준 25195. Yes or yes
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.