Sliver
문제
총총이는 친구 곰곰이의 소개로 제2회 곰곰컵에 출연할 기회를 얻었다!
총총이는 자신의 묘기인 무지개 댄스를 선보여, 여러분의 환심을 사려 한다.
이 댄스는 중독성이 강하기 때문에, 한번 보게 된 사람은 모두 따라 하게 돼버린다.
사람들이 만난 기록이 시간 순서대로 개 주어진다. (총총이는 토끼이지만 이 문제에서는 편의상 사람이라고 가정한다.)
무지개 댄스를 추지 않고 있던 사람이 무지개 댄스를 추고 있던 사람을 만나게 된다면, 만난 시점 이후로 무지개 댄스를 추게 된다.
기록이 시작되기 이전 무지개 댄스를 추고 있는 사람은 총총이 뿐이라고 할 때, 마지막 기록 이후 무지개 댄스를 추는 사람이 몇 명인지 구해보자!
입력
첫번째 줄에는 사람들이 만난 기록의 수 𝑁 (1≤𝑁≤1 000) 이 주어진다.
두번째 줄부터 개의 줄에 걸쳐 사람들이 만난 기록이 주어진다. 번째 줄에는 번째로 만난 사람들의 이름 와 가 공백을 사이에 두고 주어진다. 와 는 숫자와 영문 대소문자로 이루어진 최대 길이 의 문자열이며, 서로 같지 않다.
총총이의 이름은 ChongChong으로 주어지며, 기록에서 1회 이상 주어진다.
동명이인은 없으며, 사람의 이름은 대소문자를 구분한다. (ChongChong과 chongchong은 다른 이름이다.)
출력
마지막 기록 이후 무지개 댄스를 추는 사람의 수를 출력하라.
풀이
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
Set<String> s = new HashSet<>();
s.add("ChongChong");
for(int i=0; i<N; i++){
st = new StringTokenizer(br.readLine());
String p1 = st.nextToken();
String p2 = st.nextToken();
if(s.contains(p1)|| s.contains(p2)){
s.add(p1);
s.add(p2);
}
}
System.out.print(s.size());
}
}
해결방법
- 춤을 추는 사람들의 이름을 저장하기 위해 중복을 허용하지 않는 Set을 사용한다.
- 초기값으로 set에 "ChongChong"을 추가해 준다.
- 한 줄의 입력값을 공백으로 분리하여 두 개의 이름을 읽어 들인다.
- 두 개의 이름 중 하나가 Set에 포함되어 있다면 (set.contains) 다른 한쪽도 춤을 추게 되므로 두 이름 모두 set에 add 해준다.
- 최종 결과로 set의 크기를 출력한다.
https://www.acmicpc.net/problem/26069
'Algorithm > Baekjoon Oline Judge - Java' 카테고리의 다른 글
[백준] 2559_수열 / 누적합, 슬라이딩윈도우 (0) | 2024.07.13 |
---|---|
[백준] 1920_수찾기 / 이진탐색 binarySearch (0) | 2024.07.07 |
[백준] 25192_인사성 밝은 곰곰이 / HashSet (0) | 2024.07.07 |
[백준] 풍선 터뜨리기 / Deque (0) | 2024.07.06 |
[백준] 덱2 / Dequq, LinkedList (0) | 2024.07.06 |