Skip to content

Konkuk-KUIT/string-calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

문자열 계산기

입력한 문자열에서 숫자를 추출하여 사칙연산을 수행하는 계산기를 구현한다.


기능 요구사항

1. 기본 덧셈

쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환한다.

  • "" => 0
  • "1,2" => 3
  • "1,2,3" => 6
  • "1,2:3" => 6

2. 커스텀 구분자

커스텀 구분자는 //\n 사이에 위치하는 문자를 커스텀 구분자로 사용한다.

  • "//;\n1;2;3" => 6

3. 연산자 지정

기본 연산은 덧셈이다. op= 형식으로 연산자를 지정할 수 있다.

  • "op=+|1,2,3" => 6 (덧셈)
  • "op=-|10,3,2" => 5 (뺄셈, 10 - 3 - 2)
  • "op=*|1,2,3" => 6 (곱셈)
  • "op=/|12,3,2" => 2 (나눗셈, 12 / 3 / 2)

4. 예외 처리

사용자가 잘못된 값을 입력할 경우 IllegalArgumentException 을 발생시킨 후 애플리케이션은 종료되어야 한다.

  • 음수를 입력한 경우 예외 발생
  • 숫자가 아닌 값이 포함된 경우 예외 발생
  • 0으로 나누는 경우 예외 발생
  • 지원하지 않는 연산자를 입력한 경우 예외 발생

5. 잘못된 값이지만 종료되지 않는 경우

  • 입력값이 없는 경우 (공백일 경우) 0을 반환한다.
  • 하나의 숫자만 입력한 경우 해당 숫자를 그대로 반환한다.

6. 소수점 처리

나눗셈 결과가 소수인 경우 소수점 첫째 자리까지만 반환한다.

  • "op=/|10,3" => 3.3

7. 연산 이력 관리

  • 수행한 연산의 입력값과 결과를 순서대로 저장한다.
  • 이력은 최대 10개까지 저장하며, 초과 시 가장 오래된 이력부터 삭제한다.
  • 이력 조회 시 가장 최근 연산부터 출력한다.

프로그래밍 요구사항

  • 클래스는 2개 이상으로 분리할 것
  • StringCalculator 는 흐름 조율만 담당할 것 (파싱, 계산, 이력 관리를 직접 하지 않는다)
  • 각 클래스는 하나의 책임만 가질 것
  • 메서드 길이 15줄 이하
  • else 사용 금지
  • Stream, Lambda 사용
  • 최대한 객체지향적으로 짜볼 것

실행 방법

# 전체 테스트 실행
./gradlew test

# 특정 테스트만 실행
./gradlew test --tests "calculator.StringCalculatorTest.빈_문자열이면_0을_반환한다"

힌트

제공된 클래스 힌트 (반드시 사용할 필요 없음, 자유롭게 설계할 것)

클래스 역할
StringCalculator 진입점, 흐름 조율
InputParser 입력 파싱 (구분자, 연산자, 토큰 추출)
OperationType 연산자 enum (+, -, *, /)
CalculationHistory 연산 이력 관리 (일급 컬렉션)

PR 체크리스트

PR 올리기 전에 아래를 확인할 것.

  • ./gradlew test 전체 통과
  • 클래스가 2개 이상으로 분리되어 있는가
  • 각 클래스가 하나의 책임만 가지는가
  • else 사용하지 않았는가
  • Stream, Lambda 사용하였는가
  • 메서드 길이 15줄 이하인가

진행 방법

  1. 위 레포지토리를 fork한다.
  2. fork한 레포지토리를 본인 로컬에 clone한다. git clone https://github.com/본인계정/string-calculator
  3. 본인 이름으로 브랜치 생성 git checkout -b 홍길동
  4. StringCalculator.java 포함 클래스를 자유롭게 설계해서 구현한다
  5. 테스트 전체 통과 확인 ./gradlew test
  6. PR(Pull Request) 올리기
    • base: Konkuk-KUIT/string-calculator(위 레포지토리) main
    • PR 제목: [홍길동] 문자열 계산기 구현
    • PR 본문에 본인이 설계한 클래스 구조 간단히 설명할 것

About

쿠잇 7기 서버 파트 1주차 미션

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors