백준 알고리즘 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번 : 너의 평점은  (3) 2023.09.26
백준 알고리즘 1264번 : 모음의 개수  (0) 2023.09.15
백준 알고리즘 1330번 : 두 수 비교하기  (0) 2023.09.11
'BaekJoon' 카테고리의 다른 글
  • JavaFestival23번 문제 C#으로 풀어보기
  • 백준 알고리즘 10875 : 뱀 (시간초과)
  • 백준 알고리즘 25206번 : 너의 평점은
  • 백준 알고리즘 1264번 : 모음의 개수
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (730)
      • 스마트팜 (1)
      • 상품 추천 (223)
      • DataBase (0)
        • MongoDB (4)
        • PostgreSQL (0)
      • 하드웨어 (19)
      • 일기장 (4)
      • 파이썬 (131)
        • Basic (42)
        • 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 (5)
      • 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)
  • 인기 글

  • 태그

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

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

티스토리툴바