글에 개요
백준 알고리즘 10984번 "내 학점을 구해줘" 문제입니다.
백준 알고리즘 분류에서 '구현'에 있는 문제입니다.
이 문제는 Math.round 함수를 통한 소수점 n번째 자리에서 반올림하는 것을 익히기 위한 문제였습니다.
[백준 10984] 내 학점을 구해줘: https://www.acmicpc.net/problem/10984
참고할 글
http://brenden.tistory.com/40 ([백준 2577] 숫자의 개수 - 구현 문제)
http://brenden.tistory.com/41 ([백준 2839] 설탕 배달 - 구현 문제)
http://brenden.tistory.com/42 ([백준 10798] 세로읽기 - 구현 문제)
http://brenden.tistory.com/44 ([백준 1764] 듣보잡 - 구현 문제)
http://brenden.tistory.com/46 ([백준 2563] 색종이 - 구현 문제)
핵심 내용
- Math.round() 적용한 경우
- 소수점 첫째자리에서 반올림하여 정수로 만들어주는 함수
1 2 3 4 5 6 7 8 9 | public class MathRoundTest { public static void main(String[] args) { double e = 2.71828; // 6line 결과로 '3'이 출력된다. System.out.println(Math.round(e)); } } | cs |
- Math.round() 소수점 둘째자리에서 반올림한 경우
1 2 3 4 5 6 7 8 9 | public class MathRoundTest { public static void main(String[] args) { double e = 2.71828; // 6line 결과로 '2.7'이 출력된다. System.out.println(Math.round(e * 10) / 10.0); } } | cs |
- Math.round() 소수점 n번째자리까지 남기고자 할 때의 코드(= n+1번째 자리에서 반올림한다.)
1 2 3 4 5 6 7 8 9 10 11 12 | public class MathRoundTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //n번째 자리까지 소수점을 나타내고자 한다. int n = sc.nextInt(); double m = Math.pow(10.0, n); double e = 2.71828; System.out.println(Math.round(e*m)/m); } } | cs |
위의 3가지 예시를 보시게되시면 쉽게 이해가 가능할 것입니다.
해결 방법
- 총학점의 수(gradeSum)와 학점의 총합(scoreSum)을 초기화해준다. (double형을 사용했습니다.)
- Math.round(scoreSum*10/gradeSum)/10.0 이 부분처럼 사용하면 소수점 한 자리까지 남게됩니다.
해결한 코드
백준 참고 내용
내 학점을 구해줘 성공
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 256 MB | 1881 | 1170 | 1102 | 63.736% |
문제
게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자.
입력
첫 번째 줄에 학기의 수 T가 주어진다. 두 번째 줄부터 T개 학기에 대한 정보가 주어진다.
각 학기에 대한 정보는 다음과 같이 구성되어 있다. 첫 번째 줄에 들었던 과목의 수 N이 주어지고, 다음 N개 줄에 걸쳐서 N개 과목들의 학점 C와 성적 G가 주어진다. (1 ≤ N ≤ 10, 1 ≤ C ≤ 6의 정수. G는 0과 x-0.3, x, x+0.3 (x=1, 2, 3, 4) 중 하나로 주어진다.)
출력
각 학기에 대해 근우의 총 학점과 평점(GPA)을 출력한다. 평점은 소수점 아래 두 번째 자리에서 반올림한다.
예제 입력 1
2 4 3 4.3 2 2.0 4 0.0 2 4.0 3 4 0.0 4 0.0 3 0.0
예제 출력 1
11 2.3 11 0.0
예제 입력 2
2 4 3 4.3 2 2 4 0.0 2 4.0 3 4 0.0 4 0 3 0
예제 출력 2
11 2.3 11 0.0
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 2935] 소음 (0) | 2018.05.20 |
---|---|
[백준 8979] 올림픽 (0) | 2018.05.18 |
[백준 4673] 셀프 넘버 (0) | 2018.05.10 |
[백준 6588] 골드바흐의 추측 (0) | 2018.05.10 |
[백준 4948] 베르트랑 공준 (0) | 2018.05.10 |