백준 알고리즘 2754 : 학점계산

2023. 9. 26. 15:40·BaekJoon
반응형

 

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
'BaekJoon' 카테고리의 다른 글
  • JavaFestival23번 문제 C#으로 풀어보기
  • 백준 알고리즘 10875 : 뱀 (시간초과)
  • 백준 알고리즘 25206번 : 너의 평점은
  • 백준 알고리즘 1264번 : 모음의 개수
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725) N
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17) N
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    appdevelopment
    상품 리뷰 크롤링
    셀레니움
    스마트스토어리뷰
    카페24리뷰
    codingcommunity
    rtsp
    파이썬
    리스트
    cv2
    쇼핑몰리뷰
    믈레코비타멸균우유
    유니티
    카페24리뷰이관
    스크립트 실행 순서
    리뷰관리
    라떼우유
    devlife
    Python
    codingtips
    ipcamera
    programming101
    리뷰이관
    긴유통기한우유
    programmerlife
    unity
    C#
    list
    learntocode
    스크립트 실행
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
백준 알고리즘 2754 : 학점계산
상단으로

티스토리툴바