Menu
Coddy logo textTech

기록 기능이 있는 계산기

Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 56번째.

challenge icon

챌린지

중급

수식 스트림을 처리하고, 오류를 허용하며, 마지막에 연산자별 이력을 보고하는 계산기를 빌드하세요.

입력의 한 줄을 읽습니다: 쉼표로 구분된 a:op:b 수식 목록입니다. 연산자는 +, -, *, /입니다. parse, divideByZero, unknownOp 케이스를 가진 enum CalcError: Error를 정의하세요.

각 수식에 대해 순서대로 다음을 수행합니다:

  • 성공 시 = <n>를 출력합니다.
  • 각 오류 케이스에 대해 parse, divZero, 또는 unknownOp를 출력합니다.

각 수식별 라인 출력 후, 최소 한 번이라도 성공한 연산자에 대해 +, -, *, /의 고정된 순서로 한 줄씩 출력합니다:

<op>: count=<n> sum=<total>

count는 해당 연산자가 성공한 횟수이며, sum은 해당 성공 결과들의 합계입니다.

입력 3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2에 대한 출력은 다음과 같습니다:

= 8
divZero
= 14
unknownOp
= 8
= 10
+: count=2 sum=18
-: count=1 sum=8
*: count=1 sum=14

직접 해보기

let exprs = readLine()!.components(separatedBy: ",")
let order = ["+", "-", "*", "/"]

// 할 일: enum CalcError; func compute(...) throws -> Int;
// 루프, do/try, 결과 출력; 연산별 이력 생성;
// 정해진 순서대로 최종 보고서 작성, 성공한 연산만 포함

로직 및 흐름의 모든 레슨