https://www.acmicpc.net/problem/26069

 

26069번: 붙임성 좋은 총총이

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

www.acmicpc.net

코드설명

Hashset을 활용합니다.

 

  1. HashSet을 사용하여 이미 춤을 추고 있는 사람들을 저장합니다. HashSet을 선택한 이유는 중복을 허용하지 않으며, 검색에 O(1)의 시간 복잡도를 갖기 때문입니다.
  2. 처음에는 "ChongChong"이 춤을 추고 있는 상태로 시작합니다.
  3. 입력으로 받은 사람들의 만남을 입력받으면서, 이미 춤을 추고 있는 사람 중 하나라도 포함되어 있는 경우, 두 사람 모두 춤을 추게 합니다.
  4. 각각의 파트너를 HashSet에 추가합니다.
  5. 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);
	}
	
	
}

+ Recent posts