1. 문제
https://www.acmicpc.net/problem/19583
2. 풀이 과정
시간을 ":"을 기준으로 잘라서 int로 변환하여 분단위로 비교하였다.
시작시간보다 빨리 채팅을 친 사람들을 Set에 넣으며 중복 제거를 함께 해주었다.
종료시간과 스트리밍 종료시간 사이에 채팅을 친 사람은 Set에서 빼주면서 결과값을 구하였다.
추가적으로 입력이 언제 종료되는지 모르기 때문에, EOF검사를 해주어야 한다.
Scanner 같은 경우에는 hasNext() 메서드를 제공하지만, BufferedReader는 null검사로 해주면 된다.
백준에서는 파일로 입출력이 들어오기 때문에, 위와 같이 처리하면 잘 돌아갔다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int S = stoi(st.nextToken());
int E = stoi(st.nextToken());
int Q = stoi(st.nextToken());
Set<String> participants = new HashSet<>();
int result = 0;
String record;
while ((record = br.readLine()) != null) {
st = new StringTokenizer(record);
int time = stoi(st.nextToken());
String name = st.nextToken();
if(time <= S){
participants.add(name);
}
else if(E <= time && time <= Q){
if(participants.contains(name)){
participants.remove(name);
result++;
}
}
}
System.out.println(result);
}
public static int stoi(String time){
String[] temp = time.split(":");
return Integer.parseInt(temp[0])*60 + Integer.parseInt(temp[1]);
}
}
결과
'코딩문제풀이 > Baekjoon' 카테고리의 다른 글
[Java] 백준 16987번 : 계란으로 계란치기 (0) | 2023.01.08 |
---|---|
[Java] 백준 1926번 : 그림 (0) | 2023.01.06 |
[Java] 백준 5014번 : 스타트링크 (0) | 2023.01.04 |
[Java] 백준 14890번 : 경사로 (0) | 2023.01.03 |
[Java] 백준 2251번 : 물통 (0) | 2023.01.02 |