본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 26069번: 붙임성 좋은 총총이 [Java]

문제: https://www.acmicpc.net/problem/26069

 

26069번: 붙임성 좋은 총총이

첫번째 줄에는 사람들이 만난 기록의 수 $N\ (1 \le N \le 1\ 000)$이 주어진다. 두번째 줄부터 $N$개의 줄에 걸쳐 사람들이 만난 기록이 주어진다. $i + 1$번째 줄에는 $i$번째로 만난 사람들의 이름 $A_i$

www.acmicpc.net

1. 코드

import java.util.*;
public class test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Set <String> set = new HashSet<>();
		set.add("ChongChong");
		int N = sc.nextInt();
		while(N-- > 0) {
			String A = sc.next();
			String B = sc.next();
			
			if(set.contains(A) || set.contains(B)) {
				set.add(A);
				set.add(B);
			}
		}
		System.out.println(set.size());
	}
}

2. 설명

문제의 내용이 조금 이해하기 어려웠는데 총총이와 만나기 전까지는 춤추고 있는 상태가 아니며 총총이와 만나는 순간부터는 해당 사람도 춤추는 사람이 되며 이후로 춤추는 사람과 만나게 되면 춤추는 사람이 된다.

총총이를 만나기전 총총이에 의해 춤추는 사람이 된 사람은 춤추지 않는 상태를 유지하게 된다. 따라서 예제에서 춤추는 사람들의 목록은 다음과 같다.

[ChongChong, jthis, jyheo98, lms0806, pichulia, pjshwa, r4pidstart, swoon, tony9402, bnb2011]

3. 정리

  1. 문제를 먼저 이해하자.
  2. HashSet을 적절히 활용하자.