전공/교양 과목명과 학점, 성적을 입력하면 평점평균을 계산하는 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 버전에서 실행 가능해야 한다.
- 프로그램 실행의 시작점은
Application
의main()
이다. 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.Console
의readLine()
을 활용한다.
- 사용자가 입력하는 값은
import static camp.nextstep.edu.missionutils.Console.readLine;
import camp.nextstep.edu.missionutils.Console;
// ...
String input = Console.readLine();
- 과제는 구현을 완료한 후 GitHub 을 통해 제출해야 한다.
- GitHub 을 통한 제출은 진행 가이드를 참고해 제출한다.
- PR 제목은
[12기] $이름 과제 제출합니다.
형식으로 작성한다. - PR 본문에는 자유 형식으로 과제에 대한 소감(회고)을 작성한다.
- 깃허브 PR 이외에 별도의 제출 플랫폼은 없다.
- PR 제목은
"이 과제는 우아한테크코스에서 제공하는 프리코스 미션을 바탕으로 설계되었습니다."