[백준 25192 / Silver4] 인사성 밝은 곰곰이 - Java(자바)

토끼굴·2025년 4월 27일

작성자 : 고유진
문제 링크 : https://www.acmicpc.net/problem/25192

❓문제 설명



알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다.
ENTER는 새로운 사람이 채팅방에 입장했음을 나타낸다. 그 외는 채팅을 입력한 유저의 닉네임을 나타낸다. 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다.
새로운 사람이 입장한 이후 처음 채팅을 입력하는 사람은 반드시 곰곰티콘으로 인사를 한다. 그 외의 기록은 곰곰티콘을 쓰지 않은 평범한 채팅 기록이다.
채팅 기록 중 곰곰티콘이 사용된 횟수를 구해보자!


❗입력 및 출력


[ 입력 ]
첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수
NN 이 주어진다. (
1N1000001 \le N \le 100\,000)
두 번째 줄부터
NN 개의 줄에 걸쳐 새로운 사람의 입장을 나타내는 ENTER, 혹은 채팅을 입력한 유저의 닉네임이 문자열로 주어진다. (문자열길이
1문자열 길이201 \le \texttt{문자열 길이} \le 20)
첫 번째 주어지는 문자열은 무조건 ENTER이다.

[ 출력 ]
채팅 기록 중 곰곰티콘이 사용된 횟수를 출력하시오.


🎁 문제 풀이


다음 Enter가 입력되어 지기 전까지 유저들은 한 번씩은 무조건 곰곰티콘 사용
그 이후 같은 이름의 유저가 입력하는 채팅은 곰곰티콘 x 평범한 채팅이므로 user를 입력받기에 중복 x하기 위해 HashSet 사용
무조건 첫 채팅은 Enter이기에 미리 해시셋에 넣어서 코드를 작성하려다가 뒤에서도 Enter를 입력받는 경우가 있기 때문에 equals를 사용하여 코드를 작성
사용된 곰곰티콘 횟수이기에 Enter 이후에 중복없이 처음으로 담긴 유저들의 개수와 같으므로 HashSet의 크기만큼이 횟수

🖥️ 코드


import java.io.*;
import java.util.HashSet;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        HashSet enterUser= new HashSet();

        int N = Integer.parseInt(br.readLine());
        int count = 0;

        for(int i=N; i>0; i--){
            String chatting = br.readLine();
            
            if(chatting.equals("ENTER")){
                count += enterUser.size();
                enterUser.clear();
                continue;
            }
            enterUser.add(chatting);
        }


        count += enterUser.size();

        bw.write(count + "\n");

        br.close();
        bw.flush();
        bw.close();
    }
}
profile
10마리의 토끼가 열심히 공부 중.. 집단 지성으로 성장해요.

0개의 댓글