반응형
1차 실패
A~F까지 기준을 잡고 첫 글자에 점수를 매기고 두번째 글자에 따라 추가로 연산해주면 될거 같아서 이렇게 코드를 작성했다.
출력이 잘되는걸 보고 제출을 하였지만 틀렸다고 한다.
문제를 다시 읽어보니 예외처리가 안되어있다는 사실을 깨달았다.
더보기
namespace BaekJoon
{
public class _2754
{
public static void Main()
{
string input = Console.ReadLine();
Console.WriteLine(GetScore(input));
}
public static float GetScore(string grade)
{
var score= 0.0f;
switch(grade[0])
{
case 'A': score = 4.0f; break;
case 'B': score = 3.0f; break;
case 'C': score = 2.0f; break;
case 'D': score = 1.0f; break;
case 'F': return 0.0f;
}
switch(grade[1])
{
case '+': score += 0.3f; break;
case '-': score -= 0.3f; break;
}
return score;
}
}
}
2차시도 실패
코드를 다시 보니 좋은 방법이 생각이 났다.
성적은 A~F만 주어지고 예외처리까지 해야하니 성적에 해당하는 배열을 만들어주고
static char[] grade = { 'A', 'B', 'C', 'D', 'F' };
해당하지 않으면 예외처리를 한다음 계산해주면 되겠더라
Array.IndexOf 함수를 이용해 인덱스를 찾아준다음 -4를 뺀 절대값이 기준값이 되는 공식을 찾았다.
public static float GetScore(string input)
{
int index = Array.IndexOf(grade, input[0]);
if (index == -1) return float.NaN;
var score = MathF.Abs(index - 4);
if (input.Count() < 2) return score;
switch(input[1])
{
case '+': score += 0.3f; break;
case '-': score -= 0.3f; break;
}
return score;
}
3차 성공
출력 형식이 문제였더라...
namespace BaekJoon
{
public class _2754
{
static char[] grade = { 'A', 'B', 'C', 'D', 'F' };
public static void Main()
{
string input = Console.ReadLine();
float score = GetScore(input);
if (!float.IsNaN(score))
Console.WriteLine(score.ToString("F1"));
}
public static float GetScore(string input)
{
int index = Array.IndexOf(grade, input[0]);
if (index == -1) return float.NaN;
var score = MathF.Abs(index - 4);
if (input.Count() < 2) return score;
switch(input[1])
{
case '+': score += 0.3f; break;
case '-': score -= 0.3f; break;
}
return score;
}
}
}
'BaekJoon' 카테고리의 다른 글
JavaFestival23번 문제 C#으로 풀어보기 (0) | 2024.04.24 |
---|---|
백준 알고리즘 10875 : 뱀 (시간초과) (2) | 2023.10.13 |
백준 알고리즘 25206번 : 너의 평점은 (2) | 2023.09.26 |
백준 알고리즘 1264번 : 모음의 개수 (0) | 2023.09.15 |
백준 알고리즘 1330번 : 두 수 비교하기 (0) | 2023.09.11 |