본문 바로가기
PS/BOJ

[자바] 백준 25192 - 인사성 밝은 곰곰이 (boj java)

by Nahwasa 2022. 5. 16.

문제 : boj25192

 

  'ENTER'가 나온 후 새로 나온 String의 수를 세면 된다. 이 때, ENTER가 나오면 '새로 나온'이 리셋된다고 생각하면 된다.

 

즉,

ENTER

A

ENTER

A

라면 A는 중복이지만 ENTER일 때 초기화됬으므로 2가 답이 된다.

 

반면에

ENTER

A

A

라면 A가 중복되므로 1이 답이 된다.

 

  따라서 필요한건 빠른 시간 내에 String이 중복되었는지 확인할 수 있는 자료구조 혹은 알고리즘이다. HashSet이 딱이므로 HashSet을 사용해서 짜주면 된다.

 

 

코드 : github

...
private void solution() throws Exception {
    int n = nextInt();
    int cnt = 0;
    HashSet<String> hs = new HashSet<>();
    while (n-->0) {
        String cur = nextLine();
        if (cur.equals("ENTER")) {
            hs = new HashSet<>();
            continue;
        }
        if (!hs.contains(cur)) {
            hs.add(cur);
            cnt++;
        }
    }
    System.out.println(cnt);
}
...

댓글