본문 바로가기
자바 알고리즘/백준

백준 28470

by hoshi03 2024. 3. 24.

문제

복서 성우는 항상 공격과 회피를 연속적으로 한다.

슥~빡! 빡~슥!

즉, 피하고 때리거나, 때리고 피한다.

어느 날, 복서 성우는 숙명의 라이벌 성준이와 복싱 경기를 치르게 되었다.

이 경기에서 성우는 오직 번의 공격-회피 연속 동작을 통해 성준을 상대할 예정이다.

성우는 매 공격-회피 연속 동작 시의 체내 아드레날린 변화량을 정확히 알고 있다.

번째 공격-회피 연속 동작 상황에서,

  • 공격 시에는 체내 아드레날린이 만큼 증가하고,
  • 회피 시에는 체내 아드레날린이 만큼 감소한다.

또한 번째 공격-회피 연속 동작 상황에서,

  • 공격을 먼저 한다면, 공격 시 체내 아드레날린 증가량이 에서A_i * K_i로 바뀌고,
  • 회피를 먼저 한다면, 회피 시 체내 아드레날린 감소량이 에서B_i * K_i로 바뀐다.

성우는 경기 종료 시에 체내 아드레날린 양이 높을수록 만족스러운 경기를 치렀다고 생각한다.

성우의 경기 종료 시 최대 체내 아드레날린 양을 구해보자. 경기 시작 시 성우의 체내 아드레날린 양은 0이다.

입력

첫째 줄에 연속 동작의 횟수 이 주어진다. (1≤�≤100000)

둘째 줄에 공격 시 체내 아드레날린 증가량을 나타내는 정수 ��들이 공백으로 구분되어 주어진다. (10≤��≤1000)

셋째 줄에 회피 시 체내 아드레날린 감소량을 나타내는 정수 ��들이 공백으로 구분되어 주어진다. (10≤��≤1000)

넷째 줄에 아드레날린 증가량과 감소량의 변화를 나타내는 실수인 ��들이 공백으로 구분되어 소수점 아래 첫째 자리까지 주어진다. (0<��≤1000)

출력

첫째 줄에 성우의 경기 종료 시 최대 체내 아드레날린 양을 출력한다.

예제 입력 1 복사

3
30 30 30
40 40 40
3.4 3.4 3.4

예제 출력 1 복사

186

예제 입력 2 복사

5
11 22 33 44 55
111 99 88 77 66
1.1 1.2 1.3 1.4 1.5

예제 출력 2 복사

-218

성우는 우주 최강 복서이기 때문에 경기 종료 시 체내 아드레날린이 음수일 수 있다.

 

풀이

 

k배열 값이 1보다 작으면 공격에 곱하면 무조건 아드레날린을 손해보기에

1보다 작을때는 회피에 곱하고 크면 공격에 곱해줬다

k는 소수점 아래 한 자리까지 들어오기에 * 10으로 받아서 연산할때 / 10 해주는 식으로 소수점 아래 계산이 안되는 경우를

막으니 문제가 풀렸다

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

public class Main {

    public static void main(String[] args) throws IOException {

        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        long res = 0;

        int[] attack = new int[n];
        int[] dodge = new int[n];
        int[] ap = new int[n];

        for (int i = 0; i < n; i++){
            attack[i] = in.nextInt();
        }

        for (int i = 0; i < n; i++){
            dodge[i] = in.nextInt();
        }

        for (int i = 0; i < n; i++){
            float a = in.nextFloat() * 10;
            ap[i] = (int)a;
        }

        for (int i = 0; i < n;i++){
            if (ap[i] >= 10) res += (attack[i] * ap[i]) / 10 - dodge[i];
            else res += attack[i] - (dodge[i] * ap[i]) / 10;
        }
        System.out.println(res);
    }
}

'자바 알고리즘 > 백준' 카테고리의 다른 글

백준 2805 나무자르기 (매개변수 탐색)  (0) 2024.03.27
백준 2417 정수 제곱급  (0) 2024.03.27
백준 10816 (map)  (1) 2024.03.24
백준 2467(이분탐색)  (0) 2024.03.22
2295 세수의 합(set, 누적합)  (0) 2024.03.21