/java-gpacalc

12기 백엔드 트랙 사전과제

Primary LanguageJava

백엔드 트랙 과제 - 학점 계산기


기능 요구사항

전공/교양 과목명과 학점, 성적을 입력하면 평점평균을 계산하는 CLI 기반 학점 계산기를 구현하라.

  • 과목명은 공백 포함 10자 이내이며, 공백만으로 구성될 수 없다.

  • 과목학점은 아래와 같이 1학점부터 4학점까지 존재한다.

    학점 1 2 3 4
  • 과목성적은 크게 ABCDF 과목P/NP 과목으로 구분된다.

    • ABCDF 과목은 성적을 A부터 F까지 부여하며, 9가지 등급이 존재한다.

    • P/NP 과목은 성적을 P와 NP 두 가지 등급으로 부여한다.

    • F 또는 NP 성적을 받은 과목의 학점은 취득학점에 포함되지 않는다.

      성적 A+ A0 B+ B0 C+ C0 D+ D0 F P NP
      평점 4.5 4.0 3.5 3.0 2.5 2.0 1.5 1.0 0 Pass Not Passed
  • 평점평균 계산 공식은 다음과 같다.

    • 평점평균 = 과목성적가중치의 총합 / 과목학점의 총합
    • 과목성적가중치 = 과목평점 * 과목학점
    • 평점평균은 소수점 셋째 자리에서 반올림하여 둘째 자리까지 표현한다.
    • P/NP 과목은 평점평균 계산에서 제외한다.
  • 평점평균을 출력한 후에는 애플리케이션을 종료한다.

  • 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생시키고 애플리케이션을 종료한다.

입출력 요구사항

입력

  • 과목 정보(<과목명>-<학점>-<성적>)
  • 과목 정보는 쉼표(,)를 기준으로 구분한다.
컴퓨터구조-3-B0,컴퓨터보안-3-A+

출력

  • 입력한 과목 정보(과목명, 학점, 성적)
  • 과목명 앞에 과목유형(전공/교양)을 표시한다.
    • 전공 과목은 [전공]으로 표시한다.
    • 교양 과목은 [교양]으로 표시한다.
<과목 목록>
[전공] 데이타구조,3,A0
[전공] 자바프로그래밍언어,3,B+
[전공] 컴퓨터구조,3,C0
[전공] 컴퓨터네트워크,3,D+
[교양] 미술의이해,3,P
[교양] 교양특론3,1,NP
[교양] 기독교의이해,2,F
  • 취득학점
<취득학점>
15학점
  • 평점평균(전공, 교양 과목 모두 포함)
<평점평균>
2.36 / 4.5
  • 전공 평점평균(전공 과목만 포함)
<전공 평점평균>
2.75 / 4.5

실행결과 예시

전공 과목명과 이수학점, 평점을 입력해주세요(예시: 프로그래밍언어론-3-A+,소프트웨어공학-3-B+):
데이타구조-3-A0,자바프로그래밍언어-3-B+,컴퓨터구조-3-C0,컴퓨터네트워크-3-D+

교양 과목명과 이수학점, 평점을 입력해주세요(예시: 선형대수학-3-C0,인간관계와자기성장-3-P):
미술의이해-3-P,교양특론3-1-NP,기독교의이해-2-F

<과목 목록>
[전공] 데이타구조,3,A0
[전공] 자바프로그래밍언어,3,B+
[전공] 컴퓨터구조,3,C0
[전공] 컴퓨터네트워크,3,D+
[교양] 미술의이해,3,P
[교양] 교양특론3,1,NP
[교양] 기독교의이해,2,F

<취득학점>
15학점

<평점평균>
2.36 / 4.5

<전공 평점평균>
2.75 / 4.5

프로그래밍 요구사항

  • JDK 17 버전에서 실행 가능해야 한다.
  • 프로그램 실행의 시작점은 Applicationmain()이다.
  • build.gradle 파일을 변경할 수 없고, 외부 라이브러리를 사용하지 않는다.
  • Java 코드 컨벤션 가이드를 준수하며 프로그래밍한다.
  • 프로그램 구현이 완료되면 ApplicationTest의 모든 테스트가 성공해야 한다.
  • 프로그래밍 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 이름을 수정하거나 이동하지 않는다.

테스트 실행 가이드

  • 터미널에서 java -version을 실행하여 Java 버전이 17인지 확인한다. Eclipse 또는 IntelliJ IDEA와 같은 IDE에서 Java 17로 실행되는지 확인한다.
  • 터미널에서 Mac 또는 Linux 사용자의 경우 ./gradlew clean test 명령을 실행하고, Windows 사용자의 경우 gradlew.bat clean test 또는 ./gradlew.bat clean test 명령을 실행할 때 모든 테스트가 아래와 같이 통과하는지 확인한다.
BUILD SUCCESSFUL in 0s

라이브러리

  • camp.nextstep.edu.missionutils에서 제공하는 Console API를 사용하여 구현해야 한다.
    • 사용자가 입력하는 값은 camp.nextstep.edu.missionutils.ConsolereadLine()을 활용한다.
import static camp.nextstep.edu.missionutils.Console.readLine;

import camp.nextstep.edu.missionutils.Console;

// ...

String input = Console.readLine();

과제 진행방식

  • 과제는 구현을 완료한 후 GitHub 을 통해 제출해야 한다.
  • GitHub 을 통한 제출은 진행 가이드를 참고해 제출한다.
    • PR 제목은 [12기] $이름 과제 제출합니다. 형식으로 작성한다.
    • PR 본문에는 자유 형식으로 과제에 대한 소감(회고)을 작성한다.
    • 깃허브 PR 이외에 별도의 제출 플랫폼은 없다.

"이 과제는 우아한테크코스에서 제공하는 프리코스 미션을 바탕으로 설계되었습니다."