총총이에게 감염된 사람의 수를 구하는게 문제입니다
총총이에게 언제 감염되었나가 중요하기에
감염자 집합을 만들어줘서
'감염자 집합에 있는 사람의 이름이 입력된 경우'
'옆에 적힌 이름도 감염자 집합에 추가합시다'
를 코드로 구현하면 됩니다
코드입니다
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()); // 감염자 집합의 크기를 출력
}
}
'백준 문제풀기 > JAVA' 카테고리의 다른 글
[백준 27433 JAVA 자바] 팩토리얼 2 (0) | 2023.09.03 |
---|---|
[백준 27323 JAVA 자바] 직사각형 (0) | 2023.09.03 |
[백준 25755 JAVA 자바] 거울반사 (0) | 2023.09.03 |
[백준 25501 JAVA 자바] 재귀의 귀재 (0) | 2023.09.03 |
[백준 25314 JAVA 자바] 코딩은 체육과목 입니다 (0) | 2023.09.03 |