팡세영
Log sey
팡세영
전체 방문자
오늘
어제
  • 분류 전체보기 (73)
    • PS (45)
      • programmers (13)
      • 백준 (29)
    • Android (16)
    • Daily (0)
    • Kotlin (6)
    • Design Pattern (1)
    • Java (1)
    • Flutter (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코틀린
  • LEVEL2
  • 문자열
  • 골드
  • 의존성 주입
  • 안드로이드
  • binding
  • 완전탐색
  • TestCode
  • Android
  • 구현
  • programmers #프로그래머스
  • 프로그래머스
  • flutter
  • 해쉬맵
  • Kotlin
  • mvvm
  • BFS
  • 실버
  • java
  • programmers
  • compose
  • CustomView
  • DFS
  • ArcitecturePattern
  • 이분탐색
  • 하단네비게이션바
  • 자바
  • 백준
  • 정렬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
팡세영

Log sey

[백준 17264] I AM IRONMAN
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!!");
    }

}

'PS > 백준' 카테고리의 다른 글

[백준] Cupid (16460) - Java  (0) 2022.07.07
[백준] 노드 사이 거리 (1240) - Java, bfs  (0) 2022.07.05
백준 촌수 계산(2644)  (0) 2022.06.27
백준 볼링 점수 계산(17215)  (0) 2022.06.27
백준 숨바꼭질(1697)  (0) 2022.06.27
    'PS/백준' 카테고리의 다른 글
    • [백준] Cupid (16460) - Java
    • [백준] 노드 사이 거리 (1240) - Java, bfs
    • 백준 촌수 계산(2644)
    • 백준 볼링 점수 계산(17215)
    팡세영
    팡세영
    Android, CS, PS

    티스토리툴바