99클럽 코테 스터디 8일차 TIL

Gaeng·2024년 11월 4일
post-thumbnail

근무 지옥에 빠진 푸앙이 (Small)

Keyword
HashMap

문제 해결
처음에 문제를 이해를 못했다. 도대체 무슨 말을 이렇게 길게 하는 것인가에 대한 생각을 했고, 문제를 읽으면서, 일단 각 주마다 4번이 반복되니까, 반복은 1week * 교대에 대한 숫자로 반복문을 구성했고, 그 구성 속에서 4시간, 6시간, 10시간에 대한 시간을 비교해서, 기존 시간에 더 하는 것으로 갔다.
이 것을 통해서 기존 시간을 더했음.
이 후 더해진 값에서, 최소값과 최대값을 최대값-최소값 = 12 일 때, "Yes" 아니면 "No"로 나타내서 해결했음.

getOrDefault
V getOrDefault(Object key, V defaultValue)
• key: 찾고자 하는 키
• defaultValue: 키가 맵에 없을 때 반환할 기본값

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

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()); //주의 개수 N
        Map<String, Integer> workerMap = new HashMap<String, Integer>();
        /**
         * 4교대 근무
         * 08:00-12:00 --> 첫째줄
         * 12:00-18:00 --> 둘째줄
         * 18:00-22:00 --> 셋째줄
         * 22:00-08:00 --> 넷째줄**/

        //둘째 주부터 근무표
        for (int i = 1; i <= N * 4; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int time = 0;
            while(st.hasMoreTokens()){
                String name = st.nextToken();
                if(!name.equals("-")){
                        int currentHours = workerMap.getOrDefault(name, 0);
                        if (i % 4 == 1 || i % 4 == 3) {
                            workerMap.put(name, currentHours+4);
                        }else if(i%4==2){
                            workerMap.put(name, currentHours+6);
                        }else if(i%4==0){
                            workerMap.put(name, currentHours+10);                    }
                    }
            }
        }
        int max = 0;
        int min = 100000;
        for(Map.Entry<String, Integer> entry : workerMap.entrySet()){
            int value = entry.getValue();
            if(max<value){
                max = value;
            }
            if(min>value){
                min = value;
            }
        }
        if(max-min <=12){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }
}

profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글