[문제 해결]
반드시 이기는 경우, 반드시 지는 경우 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 |