코딩테스트/BOJ

[BOJ] 16069 붙임성 좋은 총총이 - JAVA

5월._. 2023. 5. 3.
728x90

1. 문제

 

26069번: 붙임성 좋은 총총이

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

www.acmicpc.net

총총이는 친구 곰곰이의 소개로 제2회 곰곰컵에 출연할 기회를 얻었다!

총총이는 자신의 묘기인  를 선보여, 여러분의 환심을 사려 한다. 이 댄스는 중독성이 강하기 때문에, 한번 보게 된 사람은 모두 따라 하게 돼버린다.

사람들이 만난 기록이 시간 순서대로 N개 주어진다. (총총이는 토끼이지만 이 문제에서는 편의상 사람이라고 가정한다.)

무지개 댄스를 추지 않고 있던 사람이 무지개 댄스를 추고 있던 사람을 만나게 된다면, 만난 시점 이후로 무지개 댄스를 추게 된다.

기록이 시작되기 이전 무지개 댄스를 추고 있는 사람은 총총이 뿐이라고 할 때, 마지막 기록 이후 무지개 댄스를 추는 사람이 몇 명인지 구해보자!


2. 풀이

1.  set을 이용했다. 중복 요소 관리가 쉽기 때문이다. 

2.  먼저 총총이를 set에 넣고 시작한다.

3.  한 줄을 입력받고, 두 사람 중 아무나 춤을 추고 있다면(=set에 있다면) 두 사람 모두 set에 더한다. 어차피 내부적으로 중복된 것은 저장되지 않기 때문에 이런 방식이 가능하다.

4.  set의 사이즈를 출력한다.

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(in.readLine());
        Set<String> set = new HashSet<>();
        set.add("ChongChong");

        StringTokenizer st;
        for(int i=0;i<N;i++){
            st = new StringTokenizer(in.readLine());
            String a = st.nextToken();
            String b = st.nextToken();
            if(set.contains(a) || set.contains(b)){
                set.add(a);
                set.add(b);
            }
        }

        System.out.println(set.size());
    }
}

3. 결과

안 올리려고 하다가 인터넷에 이 문제 풀이가 하나도 없는 것 같아서 올려본다.

처음에 Map<String,Boolean>을 사용했다가 그럴 필요 없는 걸 깨닫고 Set으로 변경했다.

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 2294 동전 2 - JAVA  (0) 2023.05.05
[BOJ] 17087 숨바꼭질 6 - JAVA  (0) 2023.05.04
[BOJ] 17071 숨바꼭질 5 - JAVA  (0) 2023.05.02
[BOJ] 13913 숨바꼭질 4 - JAVA  (0) 2023.05.01
[BOJ] 12851 숨바꼭질 2 - JAVA  (0) 2023.04.30

댓글