본문 바로가기

Coding Test/Step20. 심화 2

[Java] 3단계. 붙임성 좋은 총총이 [26069번]

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

  • 예제 입력1
12
bnb2011 chansol
chansol chogahui05
chogahui05 jthis
jthis ChongChong
jthis jyheo98
jyheo98 lms0806
lms0806 pichulia
pichulia pjshwa
pjshwa r4pidstart
r4pidstart swoon
swoon tony9402
tony9402 bnb2011
  • 예제 출력1
10

  • 문제 접근
    • 사람들이 만난 기록이 시간 순서대로 N개 주어짐
    • 총총이를 만나면 무지개 댄스가 옮음
    • 입력
      • 첫째 줄 : 사람들이 만난 기록 수 N(1 <= N <= 1,000)
      • ~ N번째 줄 : A와 B가 만난 기록
      • 영어 대소문자 구분 필요
      • 최대 길이 20
      • 총총의 이름은 ChongChong
      • 동명이인은 없음
    • 출력
      • 무지개 댄스를 추는 사람의 수 출력
  • 문제 해결
    • N번만큼 반복
    • Set을 선언하여 ChongChong 추가
    • 입력을 받았을 때 A 또는 B가 set에 포함되면 set에 둘 다 추가
    • 최종적으로 set의 size 출력

기존 풀이 [메모리 : 15,660 KB / 시간 : 124 ms]

public static void main(String[] args) throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    Set<String> rainbowSet = new HashSet<>();
    final String origin = "ChongChong";
    rainbowSet.add(origin);

    int logCount = Integer.parseInt(br.readLine());
    for(int i = 0; i < logCount; i++) {
        String[] log = br.readLine().split(" ");
        String A = log[0];
        String B = log[1];
        if(rainbowSet.contains(A) || rainbowSet.contains(B)){
            rainbowSet.add(A);
            rainbowSet.add(B);
        }
    }

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