알고리즘(백준 등) 공부
SWEA 11387. 몬스터 사냥
posite
2026. 6. 1. 11:31
용사의 기본 공격력이 D, 레벨이 L, 공격할 횟수가 N이고 다음 공격의 데미지는 다음과 같을 때 누적 데미지를 구하는 문제이다.
D(1+nㆍL%)가 된다. %는 1/100을 의미하며 n은 이전까지 공격 횟수를 의미한다. 또한 D는 100의 배수이다.
분배법칙에 의해 D + D * n * L / 100 을 0부터 N-1까지 합하게 된다. 1부터 N까지 연속된 정수의 합은 n(n+1) / 2 공식에 따라서 답은 D * n + D / 100 * L * (N * (N - 1)) /2 이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int tc = 1; tc <= T; tc++) {
sb.append('#').append(tc).append(' ');
StringTokenizer st = new StringTokenizer(br.readLine());
int d = Integer.parseInt(st.nextToken()), l = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
int answer = d * n + d / 100 * l * ((n * (n - 1)) / 2);
sb.append(answer).append('\n');
}
br.close();
System.out.print(sb);
}
}