본문 바로가기

백준 문제풀기/JAVA

[백준 26069 JAVA 자바] 붙임성 좋은 총총이

 

총총이에게 감염된 사람의 수를 구하는게 문제입니다

 

총총이에게 언제 감염되었나가 중요하기에

감염자 집합을 만들어줘서

'감염자 집합에 있는 사람의 이름이 입력된 경우'

'옆에 적힌 이름도 감염자 집합에 추가합시다'

를 코드로 구현하면 됩니다

 

코드입니다

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        ArrayList<String> list = new ArrayList<>(); // 감염자들을 담을 집합입니다

        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String a = st.nextToken();
            String b = st.nextToken();
            
            if(list.contains("ChongChong")==false) { //만약 총총이가 지금까지 등장한 적 없을때
            	if(a.equals("ChongChong")||b.equals("ChongChong")) { //총총이가 등장 했을 때
                	list.add(a); //총총이와 옆에 있는 사람을 집합에 추가합시다
                	list.add(b);
                }   
            }
            
            if(list.contains(a)==true&&list.contains(b)==true) { //두명 다 이미 감염자인 경우
            	continue; //건너 뜁니다
            }else if(list.contains(a)==true&&list.contains(b)==false) { //앞에있는 사람만 감염자인 경우
            	list.add(b); //뒤에 사람을 감염자에 추가합니다
            }else if(list.contains(a)==false&&list.contains(b)==true) { //뒤에있는 사람만 감염자인 경우
            	list.add(a); //앞에 사람을 감염자에 추가합니다
            }else {
            	continue;
            }
        }
        System.out.println(list.size()); // 감염자 집합의 크기를 출력
    }
}