my study.

Coding Test/Softeer

[소프티어] 나무 공격, java

fftl 2025. 2. 21. 00:55

- 문제

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

- 풀이

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {

        //BufferedReader와 StringTokenizer를 통해 입력을 받아줍니다.
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        //각 라인을 Queue로 담은 ArrayList를 생성합니다.
        ArrayList<Queue<Integer>> list = new ArrayList<>();
        list.add(new LinkedList<>());

        //각 Queue에 환경 파괴범들을 담아줍니다.
        for(int i=1; i<=N; i++){
            list.add(new LinkedList<>());
            st = new StringTokenizer(br.readLine());
            for(int j=0; j<M; j++){
                int now = Integer.parseInt(st.nextToken());
                if(now==1) list.get(i).add(now);
            }
        }

        //이제 s~e라인까지의 Queue를 확인하며, 환경 파괴범이 남아있는 라인이라면
        //환경 파괴범을 poll해줍니다.
        for(int i=0; i<2; i++){
            st = new StringTokenizer(br.readLine());
            int s = Integer.parseInt(st.nextToken());
            int e = Integer.parseInt(st.nextToken());

            for(int j=s; j<=e; j++){
                if(!list.get(j).isEmpty()){
                    list.get(j).poll();
                }
            }
        }

        //이제 list의 queue를 돌면서 남아있는 환경 파괴범의 수를
        //더해줍니다.
        int result = 0;
        for(Queue q : list){
            result += q.size();
        }

        //결과를 출력합니다.
        System.out.println(result);
    }
}