PS/백준

[백준 17264] I AM IRONMAN

팡세영 2022. 6. 28. 18:08

 

[문제 해결] 

반드시 이기는 경우, 반드시 지는 경우 2가지를 고려해 플레이어 정보를 해쉬맵에 담아 더해주면 된다.

 

1. 플레이어 이름 다음 L 이면 해쉬맵에 <플레이어 이름, 지는 경우 점수>. W이면 <플레이어 이름, 이길 경우 점수>

    담아준다.

 

2. 해쉬맵에 있는 value 값들을 전부 더 해준다.

    1. 만약 졌을 경우 점수가 떨어질 때 0점 밑으로 안떨어지게 해준다.

    2. 해쉬맵에 없는 플레이어 이름이 나온다면 점수를 떨군다. (해킹하지 못한 플레이어이므로 반드시 지는 경우)

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


public class Main {

    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int totalGameNum = Integer.parseInt(st.nextToken());
        int playerNum = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine());
        int winScore = Integer.parseInt(st.nextToken());
        int loseScore = Integer.parseInt(st.nextToken());
        int finalScore = Integer.parseInt(st.nextToken());

        HashMap<String, Integer> player = new HashMap<>();

        for(int i=0; i<playerNum; i++){
            st = new StringTokenizer(br.readLine());
            String pl = st.nextToken();

            if(st.nextToken().equals("W")) player.put(pl, winScore);
            else player.put(pl, -loseScore);
        }

        int score = 0;

        for(int i=0; i<totalGameNum; i++){
            st = new StringTokenizer(br.readLine());
            String name = st.nextToken();

            if(!player.containsKey(name) || player.get(name) < 0){
                score = (score - loseScore <= 0) ? 0: score-loseScore;
                continue;
            }

            score += player.get(name);
            if(score >= finalScore){
                System.out.println("I AM NOT IRONMAN!!"); return;
            }
        }

        System.out.println("I AM IRONMAN!!");
    }

}