백준 알고리즘 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번 : 모음의 개수
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (727)
      • 스마트팜 (1)
      • 상품 추천 (223)
      • DataBase (0)
        • MongoDB (4)
        • PostgreSQL (0)
      • 하드웨어 (18)
      • 일기장 (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)
  • 인기 글

  • 태그

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

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

티스토리툴바