반응형
1. 문제 번호 25206번
2. 문제 풀이
한줄 평가
-
문제를 먼저 정확히 파악
- (학점 * 등급별 점수) / 학점
예시 ) 자바 프로그래밍 3.0 학점 A+, 파이썬 3.0 C0
( (3.0*4.5)+(3.0*2.0) ) / 6
= 평균 3.25
나의 문제풀이 방식 및 순서
* 나의 다양한 학습이 우선이기 때문에 다양한 방법을 생각 *
- Map 에 등급별 점수를 리스트
- 한 줄 입력시 누적하며 값들을 저장
- 총 계산 후 출력
난 이런게 더 쉽다..ㅠㅠㅜㅜ
어제 연인과 이런 대화를 했다. 모든건 상대적이고, 각자의 장단점이 다 다르다.
나에게는 지독하게 어려운게 누군가에는 당연하고 쉬울수도.. 😊
3. 소스 인증
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Map<String, Double> gradeScoreMap = new HashMap<>();
String[] grade = {"A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F"};
Double[] gradeScore = {4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.0};
for (int i = 0; i < grade.length; i++) {
gradeScoreMap.put(grade[i], gradeScore[i]);
}
String inputLine;
double totalCredits = 0.0;
double totalWeightedScores = 0.0;
while ((inputLine = br.readLine()) != null) {
String[] inputAry = inputLine.split(" ");
double credits = Double.parseDouble(inputAry[1]);
String gradeReceived = inputAry[2];
if (!gradeReceived.equals("P")) {
totalCredits += credits;
if (gradeScoreMap.containsKey(gradeReceived)) {
totalWeightedScores += credits * gradeScoreMap.get(gradeReceived);
}
}
}
System.out.printf("%.6f%n", totalWeightedScores / totalCredits);
}
}
- 실패 소스코드 -
더보기
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
Map<String,Double> gradeScoreMap = new HashMap<>();
String [] grade = {"A+","A0","B+","B0","C+","C0","D+","D0","F"};
Double [] gradeScore = {4.5,4.0,3.5,3.0,2.5,2.0,1.5,1.0,0.0};
for(int i = 0; i < grade.length; i++){
gradeScoreMap.put(grade[i],gradeScore[i]);
}
String inputLine = null;
int subjectCnt = 0;
Double subjectCredit = 0.00; //학점
Double subjectScore = 0.00; //학점*등급점수
while((inputLine=br.readLine())!=null){
String [] inputAry = inputLine.split(" ");
for(int i = 0; i < inputAry.length ; i++){
subjectCnt += 1;
subjectCredit += Double.valueOf(inputAry[1]);
if(gradeScoreMap.containsKey(inputAry[2])){
subjectScore += Double.valueOf(inputAry[1]) * gradeScoreMap.get(inputAry[2]);
};
}
}
System.out.println((subjectScore)/subjectCredit);
}
}
4. 추가 개념
'double' vs 'Double'
기본 데이터 타입(primitive type) vs 객체 데이터 타입 (Wrapper Class)
기본 메모리 타입이 메모리,성능 측면에서 효율적
객체 데이터 타입은 'null' 값을 가질 수 있다.
'Double.parseDouble(String)' -> 기본 데이터 타입 Convert
'Double.valueOf(String)' -> 객체 데이터 타입 Convert
'.equals' vs '=='
'==' 객체에서는 동일 주소를 비교
'.equals' 는 객체 타입에서 값을 비교
5. 참조 블로그
불편함을 느끼실 경우 연락 주시면 곧 바로 삭제하도록 하겠습니다.
728x90
반응형
'알고리즘(BOJ) 문제풀이' 카테고리의 다른 글
[BOJ/백준] 2차원 배열_ 2566번 (0) | 2024.05.19 |
---|---|
[BOJ/백준] 2차원 배열_ 2738번 (0) | 2024.05.19 |
[BOJ/백준] 심화_1316번 (0) | 2024.05.18 |
[BOJ/백준] 심화_2941번 (0) | 2024.05.18 |
[BOJ/백준] 심화_1157번_hashMap_JavaStream정리 미완성 (0) | 2024.05.17 |