백준문제풀이 6단계 심화 1(8) 25206번 너의 평점은 (C#)
2024. 6. 5. 20:00ㆍ백준 문제풀이/6단계 심화 1
('너의 이름은'을 참 재밌게 봤었던 기억이 난다...)
치훈이의 평점을 계한하는 문제이다.
과목명과 학점 과목평점이 주어지고
학점 * 과목평점의 합을 학점의 총합으로 나누면된다.
과목평점은 위의 표를 확인하자.
using System;
using System.Collections.Generic;
class BackJoon
{
static void Main(string[] args)
{
Dictionary<string, float> sub = new Dictionary<string, float>();
float count = 0;
float aver = 0;
for (int i = 0; i < 20; i++)
{
string[] input = Console.ReadLine().Split();
if (input[2] == "P")
continue;
float score = float.Parse(input[1]) * SS(input[2]);
sub.Add(input[0], score);
count += float.Parse(input[1]);
}
foreach (var item in sub)
aver += item.Value;
Console.WriteLine(aver / count);
}
static float SS(string A)
{
float score = 0;
switch (A)
{
case "A+" :
score = 4.5f;
break;
case "A0":
score = 4.0f;
break;
case "B+":
score = 3.5f;
break;
case "B0":
score = 3.0f;
break;
case "C+":
score = 2.5f;
break;
case "C0":
score = 2.0f;
break;
case "D+":
score = 1.5f;
break;
case "D0":
score = 1.0f;
break;
case "F":
score = 0f;
break;
default:
break;
}
return score;
}
}
Dictionary를 이용해서 풀어봤다.
string, float Dictionary를 선언하고 시작하자.
먼저 입력받은 문자열을 나눠주자.
0번째는 과목명, 1번째는 학점, 2번째는 과목평점이다.
그리고 평점은 SS라는 함수를 통해 받은 문자열을 float으로 변환해준다,
F라면 0으로 P라면 SS함수에 들어오지도 못하고 그냥 continue해주자
학점과 평점을 곱해준 score를 과목명에 add해주자.
또 count에 학점을 += 를 해주어서 나중에 나눠줄 값을 만들어주자.
마지막으로 모든 벨류 값을 더한 aver에 count를 나눠서 출력해주면 끝...!
이것으로 심화1 문제가 모두 끝났다.
확실히 이전 문제들 보다 어려웠다.
시간이 많이 들었고 문제를 풀려는 의지가 계속 사라졌다.
블로그를 시작하고 처음으로 2일이나 포스팅을 못했다.
스스로에게 너무 짜증나고 화가나서 블로그를 하기 싫어졌다...
하지만 고작 이런 일로 포기를 한다면 이룰 수 있는 일은 없다고 생각한다.
그냥 한단계 성장했다고 생각하고 앞으로 더 열심히 하면 되는것이다.
그럼 내일 부터는 2차원 배열문제를 풀어보자.
'백준 문제풀이 > 6단계 심화 1' 카테고리의 다른 글
백준문제풀이 6단계 심화 1(7) 1316번 그룹 단어 체커 (C#) (1) | 2024.06.04 |
---|---|
백준문제풀이 6단계 심화 1(6) 2941번 크로아티아 알파벳 (C#) (2) | 2024.06.03 |
백준문제풀이 6단계 심화 1(5) 1157번 단어 공부 (C#) (0) | 2024.05.31 |
백준문제풀이 6단계 심화 1(4) 10988번 팰린드롬인지 확인하기 (C#) (0) | 2024.05.30 |
백준문제풀이 6단계 심화 1(3) 2444번 별 찍기 - 7 (C#) (0) | 2024.05.29 |