Menu
Coddy logo textTech

요약 - 안전한 계산기

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

challenge icon

챌린지

중급

잘못된 입력에 대해 안전하게 작동하는 작은 계산기를 만드세요.

parse, divideByZero, unknownOp 케이스를 가진 CalcError: Error를 정의하세요.

다음과 같은 동작을 하는 던지기 함수(throwing function) compute(_ a: String, _ op: String, _ b: String) throws -> Int를 정의하세요:

  • ab를 정수로 파싱하며, 실패할 경우 .parse를 던집니다.
  • op+, -, *, / 중 하나가 아닐 때 .unknownOp를 던집니다.
  • op == "/"이고 b == 0일 때 .divideByZero를 던집니다.
  • 그 외의 경우에는 정수 결과값을 반환합니다.

입력으로 한 줄을 읽습니다: 쉼표로 구분된 a:op:b 형식의 표현식 리스트입니다. 각 표현식을 do/catch를 사용하여 순서대로 처리하세요. 표현식당 한 줄씩 출력합니다:

  • 성공 시: = <n>
  • 각 에러 케이스에 대해: parse error, div by zero, 또는 unknown op

표현식별 출력 라인 다음에, 성공한 표현식의 개수를 포함한 요약 라인 하나를 출력합니다: OK: <n>

입력이 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4인 경우, 출력은 다음과 같습니다:

= 8
div by zero
parse error
unknown op
= 8
OK: 2

직접 해보기

let exprs = readLine()!.components(separatedBy: ",")

// TODO: enum CalcError; func compute(...) throws -> Int;
// 루프, do/try, 표현식별 결과 출력; 마지막에 'OK: <n>' 출력

로직 및 흐름의 모든 레슨