본문 바로가기
Algorithm/Baekjoon

Baekjoon 10984 내 학점을 구해줘 JAVA

by Hunveloper 2022. 6. 21.
728x90

 

10984번: 내 학점을 구해줘

게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자. 

www.acmicpc.net

문제

게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자. 

입력

첫 번째 줄에 학기의 수 T가 주어진다. 두 번째 줄부터 T개 학기에 대한 정보가 주어진다.

각 학기에 대한 정보는 다음과 같이 구성되어 있다. 첫 번째 줄에 들었던 과목의 수 N이 주어지고, 다음 N개 줄에 걸쳐서 N개 과목들의 학점 C와 성적 G가 주어진다. (1 ≤ N ≤ 10, 1 ≤ C ≤ 6, C는 정수) G는 {0, 0.7, 1, 1.3, 1.7, 2, 2.3, 2.7, 3, 3.3, 3.7, 4, 4.3} 중 하나이며 소수 부분은 최대 한 자리까지 주어진다.

출력

각 학기에 대해 근우의 총 학점과 평점(GPA)을 출력한다. 정답과의 절대 오차는 10-1까지 허용한다.

풀이

1. 총 학점을 구하는 방법 : N개에 걸쳐서 입력되는 C들의 합

2. GPA를 구하는 방법 : N개에 걸쳐서 입력되는 C와 G를 곱 -> 곱해진 값이 I번 과목에 대한 평점이며, 이 값들을 더해서 총 학점으로 나누면 전체 평점(GPA)이 됨

 -> 문제에서 소수 부분은 최대 한 자리이기에 round함수를 이용하여 반올림하여 계산

코드
import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		for(int t=0;t<T;t++) {
			int n=Integer.parseInt(br.readLine());
			int sum=0, temp;
			double gpa=0;
			for(int i=0;i<n;i++) {
				StringTokenizer st = new StringTokenizer(br.readLine());
				temp=Integer.parseInt(st.nextToken());
				sum+=temp;
				gpa+=Double.parseDouble(st.nextToken())*temp;
			}
			System.out.println(sum+" "+Math.round(gpa/sum*10)/10.0);
		}
	}
}
728x90
728x90

댓글