반응형
ENTER 를 기준으로, 채팅방에 들어온 사람이 곰곰티콘을 사용한 회수를 구하는 문제.
ENTER가 입력된 시점을 기준으로 모든 사용자들은 첫번째 채팅에 곰곰티콘을 사용하고, 두번째 채팅부터는 사용하지 않는다.
결국 사용자의 중복 여부를 알아보는 문제이기 때문에 최근에 알아보았던 HashSet 기능을 활용하면 될 것이다.
2023.10.17 - [Java/개념정리] - [Java] HashSet 에 대해 알아보자
먼저 입력값이 ENTER인지 판단한다.
ENTER이라면 현재까지의 HashSet에 크기(사용자 수)를 count(곰곰티콘을 사용한 횟수)에 추가하고, HashSet을 리셋해준다.(새로운 사람이 들어왔으므로 첫 채팅은 곰곰티콘을 사용)
ENTER가 아닌 사용자라면 HashSet에 입력받은 사용자를 차례로 추가한다. (이 과정에서 중복은 걸러진다.)
int count = 0;
HashSet<String> user = new HashSet<String>();
for (int i = 0; i < n; i++) {
String input = br.readLine();
if (input.equals("ENTER")) {
count += user.size();
user.clear();
} else {
user.add(input);
}
}
마지막까지 반복한 후, count변수의 값과 HashSet의 크기를 더한 값을 출력해주면 완성.
전체 코드는 다음과 같다.
// 해설참조 : sehyeok.tistory.com
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int count = 0; // 곰곰티콘 사용 횟수
HashSet<String> user = new HashSet<String>();
for (int i = 0; i < n; i++) {
String input = br.readLine();
if (input.equals("ENTER")) {
count += user.size();
user.clear(); // Hash 초기화
} else {
user.add(input); // Hash에 사용자 추가
}
}
System.out.println(user.size() + count);
br.close();
}
}
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #2108 통계학 (1) | 2023.10.18 |
---|---|
[Java] 백준알고리즘 #26069 붙임성 좋은 총총이 (2) | 2023.10.17 |
[Java] 백준알고리즘 #1037 약수 (0) | 2023.10.13 |
[Java] 백준알고리즘 #11050 이항 계수 1 (0) | 2023.10.13 |
[Java] 백준알고리즘 #10872 팩토리얼 (0) | 2023.10.13 |