알고리즘

[백준, 자바, 1362번] 펫

hminor 2024. 1. 3. 17:21

풀이

  • 해당 문제는 단순하게 풀 수 있는 문제로
  • 현재 체중이 적정 체중의 1/2 초과 2배 미만으로 있는지에 대한 여부와
  • 0이하의 체중 그리고 이외 이렇게 분류해서 해결할 수 있는데
  • 여기서 간과했던 부분으로는 문제의 마지막에 있는 문장으로
  •  ` 매 작용이 끝날 때마다 펫은 자신의 상태를 표시하며, 펫이 중간에 죽는다면 이후의 작용은 무시됩니다.`
  • 위 조건을 적용해야 해결이 되기에 state를 두어 해결 할 수 있도록 함.

 

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


public class 펫 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Long cnt = 0L;

        while (true) {
            Boolean state = false;
            cnt++;
            StringTokenizer st1 = new StringTokenizer(br.readLine());
            Integer o = Integer.parseInt(st1.nextToken());
            Integer w = Integer.parseInt(st1.nextToken());
            if (o == 0 && w == 0) break;
            while (true) {
                StringTokenizer st2 = new StringTokenizer(br.readLine());
                String x = st2.nextToken();
                if (x.equals("#")) break;
                else if (x.equals("E")) w -= Integer.parseInt(st2.nextToken());
                else w += Integer.parseInt(st2.nextToken());
                if (w <= 0) state = true;
            }

            if (w <= 0 || state) System.out.println(cnt + " "+ "RIP");
            else if (o/2 < w && w < o*2) System.out.println(cnt + " "+ ":-)");
            else System.out.println(cnt + " "+ ":-(");
        }
    }
}