문제 해석
- 첫번째 줄에는 채팅방 기록 수 N을 입력받고, N개 만큼 채팅기록자의 닉네임을 입력받아 처음들어와서 곰곰이모티콘을 쓴 횟수를 출력하면 된다.
- 단, ENTER후에 채팅기록자를 입력받는데 새로운 ENTER이 나오면 처음 ENTER에 들어온 채팅기록자일자라도 새로 들어온 사람처럼 센다.
- 같은 ENTER안에 들어가 있는 동일 유저는 카운트 한번만 센다. (왜냐, 채팅을 친 거이기 때문에)
코드
import java.util.*;
import java.io.*;
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 enterMember = new HashSet();
int N = Integer.parseInt(br.readLine());
int count = 0;
for(int i = 0; i < N; i++){
String chat = br.readLine();
if(chat.equals("ENTER")){
count += enterMember.size();
enterMember = new HashSet();
}else{
enterMember.add(chat);
}
}
count += enterMember.size();
bw.write(count + "\n");
br.close();
bw.flush();
bw.close();
}
}
- 코드에 대한 설명은 주석으로 자세히 적어 두었다.
결과
코드2
import java.util.*;
import java.io.*;
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 enterMember = new HashSet();
int N = Integer.parseInt(br.readLine());
int count = 0;
while(N --> 0) {
String str = br.readLine();
if(str.equals("ENTER")) {
count += enterMember.size();
enterMember.clear();
continue;
}
enterMember.add(str);
}
count += enterMember.size();
bw.write(count + "\n");
br.close();
bw.flush();
bw.close();
}
}
- 아래의 형태를 계속 외면해 왔는데 생각보다 편한 것 같아서 사용해 보았다.
while(variable-- > 0) {
}
결과2
느낀 점
- 이 문제도 시간과 메모리가 문제인 것말고는 어려움없이 풀 수 있었다.