| 문제
알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다.
ENTER는 새로운 사람이 채팅방에 입장했음을 나타낸다. 그 외는 채팅을 입력한 유저의 닉네임을 나타낸다. 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다.
새로운 사람이 입장한 이후 처음 채팅을 입력하는 사람은 반드시 곰곰티콘으로 인사를 한다. 그 외의 기록은 곰곰티콘을 쓰지 않은 평범한 채팅 기록이다.
채팅 기록 중 곰곰티콘이 사용된 횟수를 구해보자!
| 입력
첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수 𝑁 이 주어진다. (1≤𝑁≤100000)
두 번째 줄부터 𝑁 개의 줄에 걸쳐 새로운 사람의 입장을 나타내는 ENTER, 혹은 채팅을 입력한 유저의 닉네임이 문자열로 주어진다. (문자열길이1≤문자열 길이≤20)
첫 번째 주어지는 문자열은 무조건 ENTER이다.
| 출력
채팅 기록 중 곰곰티콘이 사용된 횟수를 출력하시오.
| 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Set<String> list = new HashSet<>();
int N = Integer.parseInt(br.readLine());
int count = 0;
for(int i=0; i<N; i++) {
String str = br.readLine();
if(str.equals("ENTER"))
list.clear();
else if(!list.contains(str)) {
list.add(str);
count++;
}
}
System.out.println(count);
}
}
| 정리
중복되는 문자열은 저장할 필요가 없으니 Set 자료구조를 활용했다.
ENTER가 나오면 list를 비워준다. (ENTER가 입력되면 채팅을 남긴 멤버를 다시 기록해야 하기 때문)
입력 받은 str(유저의 닉네임)이 list에 포함되어 있지 않으면 list에 포함하고 count++를 해준다.
| 문제
알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다.
ENTER는 새로운 사람이 채팅방에 입장했음을 나타낸다. 그 외는 채팅을 입력한 유저의 닉네임을 나타낸다. 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다.
새로운 사람이 입장한 이후 처음 채팅을 입력하는 사람은 반드시 곰곰티콘으로 인사를 한다. 그 외의 기록은 곰곰티콘을 쓰지 않은 평범한 채팅 기록이다.
채팅 기록 중 곰곰티콘이 사용된 횟수를 구해보자!
| 입력
첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수 𝑁 이 주어진다. (1≤𝑁≤100000)
두 번째 줄부터 𝑁 개의 줄에 걸쳐 새로운 사람의 입장을 나타내는 ENTER, 혹은 채팅을 입력한 유저의 닉네임이 문자열로 주어진다. (문자열길이1≤문자열 길이≤20)
첫 번째 주어지는 문자열은 무조건 ENTER이다.
| 출력
채팅 기록 중 곰곰티콘이 사용된 횟수를 출력하시오.
| 풀이
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Set<String> list = new HashSet<>(); int N = Integer.parseInt(br.readLine()); int count = 0; for(int i=0; i<N; i++) { String str = br.readLine(); if(str.equals("ENTER")) list.clear(); else if(!list.contains(str)) { list.add(str); count++; } } System.out.println(count); } }
| 정리
중복되는 문자열은 저장할 필요가 없으니 Set 자료구조를 활용했다.
ENTER가 나오면 list를 비워준다. (ENTER가 입력되면 채팅을 남긴 멤버를 다시 기록해야 하기 때문)
입력 받은 str(유저의 닉네임)이 list에 포함되어 있지 않으면 list에 포함하고 count++를 해준다.