금일은 본 강의내용을 바탕으로 제공해준 문제풀이 및 튜터님과의 면담시간, 알고리즘 강연이 있었다.
Lv1
먼저 내가 생각한방식은 enum과 switch문을 사용해서 하나의 함수 안에 각각 덧셈, 뺼셈, 곱셈, 나눗셈의 로직을 넣은다음에 맨 아래에 각각의 값을 넣어서 계산하는 방식으로 작성을 했다. 아래에는 코드 전체를 넣어두겠다.
//: [Previous](@previous)
import Foundation
var greeting = "Hello, playground"
//: [Next](@next)
class Calculator {
//연산자 구별할 타입생성
enum Operator {
case add //덧셈
case subtraction //뺄셈
case multiplication //곱셈
case division //나눗셈
}
func calculate(op: Operator, a: Int, b: Int) -> Int {
switch op {
case .add: // 덧셈 case문
return a + b // 입력한 a와 b의 덧셈값을 리턴
case .subtraction: // 뺼셈 case문
return a - b // 입력한 a와 b의 뺼셈값을 리턴
case .multiplication: // 곱셈 case문
return a * b // 입력한 a와 b의 곱셈값을 리턴
case .division: // 나눗셈 case문
// 분모에0이 입력되면 0을 리턴
if b == 0 {
return 0
}
return a / b // 입렵한 a와 b의 나눗셈값을 리턴
}
}
}
// calculator 인스턴스 생성
let calculator = Calculator()
// 연산(임의의 값 10, 3 각각 부여)
let addResult = calculator.calculate(op: .add, a: 10, b: 3)
let subResult = calculator.calculate(op: .subtraction, a: 10, b: 3)
let mulResult = calculator.calculate(op: .multiplication, a: 10, b: 3)
let divResult = calculator.calculate(op: .division, a: 10, b: 3)
Lv2
아래는 해당 코드의 원본이다.
//: [Previous](@previous)
import Foundation
var greeting = "Hello, playground"
//: [Next](@next)
class Calculator {
//연산자 구별할 타입생성
enum Operator {
case add //덧셈
case subtraction //뺄셈
case multiplication //곱셈
case division //나눗셈
case remain //나머지셈
}
func calculate(op: Operator, a: Int, b: Int) -> Int {
switch op {
case .add: // 덧셈 case문
return a + b // 입력한 a와 b의 덧셈값을 리턴
case .subtraction: // 뺼셈 case문
return a - b // 입력한 a와 b의 뺼셈값을 리턴
case .multiplication: // 곱셈 case문
return a * b // 입력한 a와 b의 곱셈값을 리턴
case .division: // 나눗셈 case문
// 분모에0이 입력되면 0을 리턴
if b == 0 {
return 0
}
return a / b // 입렵한 a와 b의 나눗셈값을 리턴
case .remain:
return a % b
}
}
}
// calculator 인스턴스 생성
let calculator = Calculator()
// 연산(임의의 값 10, 3 각각 부여)
let addResult = calculator.calculate(op: .add, a: 10, b: 3)
let subResult = calculator.calculate(op: .subtraction, a: 10, b: 3)
let mulResult = calculator.calculate(op: .multiplication, a: 10, b: 3)
let divResult = calculator.calculate(op: .division, a: 10, b: 3)
let remainResult = calculator.calculate(op: .remain, a: 10, b: 3)
아직 3,4번의 문제가 남았지만 내일중으로 다 끝낼까 생각중이며 남은 강의도 몰아서 다 봐야할것같다.