본문 바로가기
알고리즘

[백준/JAVA] 17952. 과제는 끝나지 않아!

by 상후 2022. 4. 4.
728x90
반응형

 

 

https://github.com/ROUTINE-STUDY/Algorithm

알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.

문제 출처 : https://www.acmicpc.net/problem/17952

 

17952번: 과제는 끝나지 않아!

성애는 이번 학기에 전공을 정말 많이 듣는다. 이로 인해 거의 매일을 과제를 하면서 보내고 있다. 그런데도 과제가 줄어들 기미가 보이지 않는데, 바로 분단위로 과제가 추가되고 있기 때문이

www.acmicpc.net

 

출처 : 백준

 

내 코드(JAVA)

 

public class Solution {

    public static void main(String[] args) throws IOException {
        int result = 0;

        try(final BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
            int N = Integer.parseInt(br.readLine());
            Stack<Work> stack = new Stack<>();

            for (int i = 0; i < N; i++) {
                String[] workInfo = br.readLine().split(" ");
                Work work = null;

                if(workInfo.length > 1) {
                    work = new Work(Integer.parseInt(workInfo[1]), Integer.parseInt(workInfo[2]) - 1);
                    stack.push(work);
                } else {
                    if(!stack.isEmpty()) {
                        work = stack.peek();
                        work.execute();
                    }
                }

                if(!stack.isEmpty() && work.getMinute() == 0) {
                    result += work.getScore();
                    stack.pop();
                }
            }

            System.out.println(result);
        }
    }

}

class Work {
    private int score;
    private int minute;

    public Work(int score, int minute) {
        this.score = score;
        this.minute = minute;
    }

    public int getScore() {
        return score;
    }

    public int getMinute() {
        return minute;
    }

    public void execute() {
        this.minute--;
    }
}

 

스터디 피드백 내용

 

시간복잡도는 O(N)

 

 

 

728x90
반응형

댓글