728x90
https://www.acmicpc.net/problem/19583
package BKD_0x15_Hash;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.StringTokenizer;
public class BOJ_19583 {
public static void main(String[] args) throws IOException {
HashSet<String> set = new HashSet<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] time = br.readLine().split(" ");
String start = time[0];
String end = time[1];
String quit = time[2];
String str;
int count =0;
while((str=br.readLine())!=null){
String[] chat = str.split(" ");
String timeStamp = chat[0];
String name = chat[1];
if(timeStamp.compareTo(start)<=0 && timeStamp.compareTo("00:00")>=0){
set.add(name);
}
else if(timeStamp.compareTo(end)>=0 && timeStamp.compareTo(quit)<=0){
if(set.contains(name))count++;
set.remove(name);
}
}
System.out.println(count);
}
}
- HashSet, compareTo사용
- 처음에 시간비교할 때 싹 다 초로 바꿔서 정수로 진행해야 하나 했는데 문명적인 방법(compareTo)을 만나버림
기준 1. 개강 총회 시작 전
- 문자열로 입력되는 시간 값을 비교하기 위해 compareTo메소드를 사용
- 입력받은 시간대가 사전적으로 같거나 앞에 위치해있는지(0이하; 빠른 시간) 판단
- 해당될 경우 set에 추가
기준 2.개강총회 종료~ 스트리밍 종료
- 문자열로 입력되는 시간값이 사전적으로 같거나 뒤에 위치해있는지(0이상, 늦은 시간)판단
- 해당될 경우 count증가, set에서 삭제.
- 삭제 안하면 카운트 중복 여부 존재
compareTo()
str.compareTo(str2)
- -1 : str이 사전적 앞 순서
- 0 : 같은 문자열
- 1 : str이 사전적 뒷 순서
728x90
'🐣 알고리즘 삐약 > 💻 백준 삐약' 카테고리의 다른 글
106 삐약 : 백준 11478 | 서로다른 부분 문자열의 개수 [바킹독| HASH |JAVA] (0) | 2024.10.31 |
---|---|
105 삐약 : 백준 16165 | 걸그룹마스터 준석이 [바킹독| HASH |JAVA] (0) | 2024.10.31 |
104 삐약 : 백준 9375 | 패션왕 신혜빈 [바킹독| HASH |JAVA] (0) | 2024.10.31 |
103 삐약 : 백준 17219 | 비밀번호 찾기 [바킹독| HASH |JAVA] (0) | 2024.10.31 |
102 삐약 : 백준 13414 | 수강신청 [바킹독| HASH |JAVA] (0) | 2024.10.31 |