백준 19583 - 싸이버개강총회
Updated:
Java
19583 번 - 싸이버개강총회
문제
접근 방법
주어진 시간인 “HH:MM”을 int형 정수로 변환하였다.
- 개강 총회 시작한 시간 이전
- 총회가 끝나고 스트리밍이 끝나기 전
둘다 충족하는 사람이 있는지 확인하였다.
HashSet<>()을 사용하였으며,
총회 시작 이전의 사람들을 Set에 넣고,
총회 종료 이후, 스트리밍이 끝나기 전 사람들이 해당 Set에 존재하는지 확인하였다.
또한 중복을 방지하기 위해, 확인 후 Set에서 해당 인원을 제거해주었다.
코드
import java.util.*;
import java.io.*;
public class Main {
static int n, result;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk = new StringTokenizer(br.readLine());
int startT = convertTime(stk.nextToken());
int endT = convertTime(stk.nextToken());
int endS = convertTime(stk.nextToken());
int time;
String input, name;
Set<String> set = new HashSet<>();
while((input = br.readLine()) != null) {
stk = new StringTokenizer(input);
if(!stk.hasMoreTokens())
break;
time = convertTime(stk.nextToken());
name = stk.nextToken();
if(time <= startT) {
set.add(name);
}
else if(endT <= time && time <= endS) {
if(set.contains(name)) {
set.remove(name); // 중복하여 채팅 치는 것을 방지
result++;
}
}
}
System.out.println(result);
br.close();
}
// 문자열을 시간으로 변경
static int convertTime(String str) {
int time = 0;
String[] sp = str.split(":");
time += stoi(sp[0]) * 60; // hour
time += stoi(sp[1]); // min
return time;
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}