https://www.acmicpc.net/problem/26069
코드설명
Hashset을 활용합니다.
- HashSet을 사용하여 이미 춤을 추고 있는 사람들을 저장합니다. HashSet을 선택한 이유는 중복을 허용하지 않으며, 검색에 O(1)의 시간 복잡도를 갖기 때문입니다.
- 처음에는 "ChongChong"이 춤을 추고 있는 상태로 시작합니다.
- 입력으로 받은 사람들의 만남을 입력받으면서, 이미 춤을 추고 있는 사람 중 하나라도 포함되어 있는 경우, 두 사람 모두 춤을 추게 합니다.
- 각각의 파트너를 HashSet에 추가합니다.
- HashSet의 크기를 계산하여 춤을 추는 총 인원을 구합니다.
코드
package algorhythm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main {
public static int N, M;
public static HashSet<String> hashset = new HashSet<String>();
public static int answer = 0;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
//먼저 춤을 추고 있습니다.
hashset.add("ChongChong");
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
String inputA = st.nextToken();
String inputB = st.nextToken();
if(hashset.contains(inputA) || hashset.contains(inputB)) {
hashset.add(inputA);
hashset.add(inputB);
}
}
answer = hashset.size();
System.out.println(answer);
}
}
'알고리즘 > 해시를 사용한 집합과 맵' 카테고리의 다른 글
[백준] 9375 패션왕 신해빈 - HashMap(해시맵) + 시간초과(경우의 수에 대한 이해) JAVA (0) | 2024.03.28 |
---|---|
[백준] 2910 빈도 정렬 - LinkedHashMap(링크드해시맵) + LinkedHashSet(링크드해시셋) + Comparable JAVA (0) | 2024.03.28 |
[백준] 25192 인사성 밝은 곰곰이 - HashSet(해시셋) JAVA (0) | 2024.03.26 |
[백준] 17219 비밀번호 찾기 - HashMap(해시맵) JAVA (0) | 2024.03.26 |
[백준] 14425 문자열 집합 - HashSet(해시셋) JAVA (0) | 2024.03.26 |