25206번: 너의 평점은
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치
www.acmicpc.net
[이 문제의 포인트 ]
1. 총 20줄의 걸쳐서 문자열이 출력된다.
2. BufferReader와 StringTokenizer의 사용
3. split 메서드의 활용
[해설]
이 문제의 경우 StringTokenizer와 BufferReader만 잘 사용한다면 쉽게 풀 수 있는 문제 입니다.
일단 문제의 경우 20줄에 걸쳐서 값들이 들어온다고 하였음으로
총 20번을 반복해줘야 합니다.
여기서 readLine()메서드를 잘알아야 하는데
이 메서드의 경우 한줄씩 읽어 들입니다.
즉 이렇게 문자열을 가지고 오게되면 한줄에 한개씩 줄을 읽게 됩니다.
그렇기 때문에 반복문안에서 readLine()을 써주는 것이 핵심입니다.
또한 값을 가져올 때 총 3개로 split 메서드로 나눕니다.
1 . 과목명
2. 과목평점
3. 학점
이 총 세 부분으로 나눠서 반복문을 돌리는 것이 핵심 입니다.
이 문제의 경우 전공평점을 구하는 방법은
(과목 평점 * 학점 ) / 총 학점 으로 구할 수 있습니다.
문제에서는 전공평점으로 구하라고 하였음으로
코드로 한번 확인해봅시다.
package com.algorithm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static double sum;
static int Sum_credit =0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int i=0; i<20;i++){ // 총 과목 20개를 반복
//한줄씩 읽어 들이기 때문에 총 20번을 읽어야 함으로 반복문안에 써주는 것이 핵심임.
StringTokenizer st = new StringTokenizer(br.readLine()); // BufferedReaer로 받아줌
String sub = st.nextToken(" "); // 띄어쓰기로 문자열을 나눔.
double credit = Double.parseDouble(st.nextToken()); // 과목 평점
String avg = st.nextToken(); // 학점
avg(credit,avg);
}
System.out.println(sum/ Sum_credit);
}
private static void avg(double credit, String avg) {
switch (avg){
case "A+" :{
sum = sum+ (credit*4.5);
Sum_credit+=credit;
break;
}
case "A0" : {
sum = sum+(credit*4.0);
Sum_credit+=credit;
break;
}
case "B+" : {
sum = sum+(credit*3.5);
Sum_credit+=credit;
break;
}
case "B0" : {
sum = sum+(credit*3.0);
Sum_credit+=credit;
break;
}
case "C+" :{
sum = sum+(credit*2.5);
Sum_credit+=credit;
break;
}
case "C0" : {
sum = sum+(credit*2.0);
Sum_credit+=credit;
break;
}
case "D+" : {
sum = sum+(credit*1.5);
Sum_credit+=credit;
break;
}
case "D0" : {
sum = sum+(credit*1.0);
Sum_credit+=credit;
break;
}
case "F" : {
sum = sum+(credit*0.0);
Sum_credit+=credit;
break;
}
case "P" :{
break;
}
}
}
}
'백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘 - 1874] 스택 수열 - 자바 [With Java] (1) | 2023.08.10 |
---|---|
[백준 알고리즘 2745번 ] - 진법 변환 자바 [With Java] 해설 (0) | 2023.08.09 |
[백준 알고리즘 - 12891] DNA 비밀번호 - 자바 [With Java] (0) | 2023.08.08 |
[백준 알고리즘 - 1940] 주몽 -Java [With Java] (0) | 2023.08.07 |
[백준 알고리즘 - 2018] 수들의 합 5 [Wtih Java] -투 포인터 문제 (0) | 2023.08.05 |