반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준] 백준 25965번 미션 도네이션 자바(JAVA)

1) 문제번호 : 25965

 

2) 문제 출처

https://www.acmicpc.net/problem/25965

 

25965번: 미션 도네이션

리그오브전설 스트리머 순범이는 트위치 플랫폼으로 시청자를 끌어모으고 있다. 순범이는 '트윕' 음성 도네이션을 통해 시청자들과 소통하고는 한다. 순범이는 트윕에 '미션' 기능이 있다는 것

www.acmicpc.net

 

2. 문제

리그오브전설 스트리머 순범이는 트위치 플랫폼으로 시청자를 끌어모으고 있다. 순범이는 '트윕' 음성 도네이션을 통해 시청자들과 소통하고는 한다. 순범이는 트윕에 '미션' 기능이 있다는 것을 알고, 자신의 리그오브 전설 실력을 활용해 매 게임마다 미션 기능으로 돈을 끌어모으려고 한다. 미션 기능을 이용하는 시청자가 너무 많을 때도 있어서 순범이는 게임이 끝난 후 자신이 미션으로 받을 수 있는 총 도네이션 금액이 얼마인지를 구하는 계산 프로그램을 작성하고자 한다. 각 게임들은 여러 개의 미션으로 이루어져 있으며, 각 미션들은 킬당 원 추가, 데스당 원 차감, 어시스트당 원 추가의 형식으로 주어진다. 만약 어떤 미션의 계산 금액이 0보다 작은 경우에는 총 금액에 이를 합산하지 않는다. 각 게임을 새로 시작할 때에는 도네이션 금액은 0부터 시작한다. 순범이가 각 게임을 마칠 때마다 받게 되는 총 도네이션 금액을 구해보자.

 

3. 제약사항

 

4. 입력

첫 줄에 총 게임의 수 이 주어진다.

각 게임마다 첫 줄에 총 미션의 수 이 주어지며, 개의 줄에 거쳐 각 미션의 내용이 주어진다.

각 미션들은 킬당 추가해야 하는 금액 , 데스당 차감해야 하는 금액 , 어시스트당 추가해야 하는 금액 가 공백으로 구분되어 주어진다.

각 게임당 마지막 줄에 게임이 종료된 후 순범이의 킬 , 데스 , 어시스트 가 공백으로 구분해 주어진다.

 

5. 출력

각 게임마다 순범이가 받는 총 도네이션 금액을 순서대로 한 줄씩 출력한다.

 

6. 풀이

- 문제를 제대로 읽고 생각하지 않아 많이 틀린 문제다.

- 문제 자체적인 것은 쉬운데, 변수형의 값 범위를 생각하지 않아 틀렸다.

- 아래의 문제에서는 각 K, D, A에 대한 1차원 배열 3개를 만들어서 계산을 하고 출력하면 된다.

- 1차원 뿐만 아니라 2차원 배열을 사용해도 된다.

- 근데, 계산을 하게 되면 int형의 범위를 벗어나는 값이 나오기 때문에 int형보다 큰 변수형을 사용해야 한다.

 

7. 소스 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;

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

		int N = Integer.parseInt(br.readLine());
		
		for(int i = 0; i < N; i++) {
			int M = Integer.parseInt(br.readLine());
			
			long total = 0L;
			
			long[] krr = new long[M];
			long[] drr = new long[M];
			long[] arr = new long[M];
			
			for(int j = 0; j < M; j++) {
				StringTokenizer st = new StringTokenizer(br.readLine());
				
				krr[j] = Long.parseLong(st.nextToken());
				drr[j] = Long.parseLong(st.nextToken());
				arr[j] = Long.parseLong(st.nextToken());
			}
			
			StringTokenizer st = new StringTokenizer(br.readLine());
			
			long k = Long.parseLong(st.nextToken());
			long d = Long.parseLong(st.nextToken());
			long a = Long.parseLong(st.nextToken());
			
			for(int j = 0; j < M; j++) {
				long sum = (krr[j] * k) - (drr[j] * d) + (arr[j] * a);
				
				if(sum > 0) {
					total += sum;
				}
			}
			
			System.out.println(total);
		}

	}

}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기