🐣 알고리즘 삐약/💻 백준 삐약

107 삐약 : 백준 19583 | 싸이버개강총회 [바킹독| HASH |JAVA]

우주수첩 2024. 10. 31. 17:06
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