말하는 컴공감자의 텃밭

백준 25192 인사성 밝은 곰곰이 <S4> - java HashSet 본문

알고리즘/Backjoon - Java

백준 25192 인사성 밝은 곰곰이 <S4> - java HashSet

현콩 2023. 10. 1. 14:50
728x90

귀엽고만

 

 

문제를 보게되면, 채팅방 기록 개수가 첫줄에 주어지고, 이후로 사용자의 닉네임인 문자열이 주어진다.

처음에 누군가가 들어오면 곰곰티콘으로 인사를 하고, 같은 닉네임이 추가로 나온다면 일반 채팅이다.

곰곰티콘이 얼마나 사용되었는지 출력하라.

 

간단하게 중복을 체크하면 되는 문제였다. HashSet이 떠올랐고 바로 작성했다.

조건을 str이 ENTER라면 clear해주고, 아니고 !contains라면  Hash에 add하고, answer ++ 해주었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;
 
public class Main { // 25192번 인사성 밝은 곰곰이
    public static void main(String[] args) throws Exception {
        // 닉네임을 Hash에 넣고, 중복되지 않으면 cnt ++
        // Enter가 들어오면 Hash 초기화 후 반복.
        // 복잡하다면 처음껄 함수로 빼면 될듯듯
        Scanner sc = new Scanner(System.in);
        HashSet<String> Chat = new HashSet<>();
        int K = sc.nextInt();
        int answer = 0;
 
        //input 
        for(int tc = 1; tc <= K; tc++) {
            String str = sc.nextLine();            
            if(str.equals("ENTER")) { // == 안쓰도록 주의.
                Chat.clear();
            }else if(!Chat.contains(str)){
                Chat.add(str);
                answer ++;
            }                        
        }
        
        // output
        System.out.println(answer);
    }        
}
cs

 

근데 이상하게 특정 input에서 오류가 발생해서 틀리고 말았다.

~?~?~

세는곳도 없고 반례가 있나 생각했는데 첫줄이 씹히는것 같았다.

스캐너 이슈

아무래도 nextInt()로 받고, 다음부터 str로 받아서 공백이 들어갔었나보다

K를 받고, 공백을 잡아먹고 input을 받아주니 해결됐다.

 

 

728x90
Comments