20231207 / 계산기 만들기
by jeongminy# 코드타카 10번 문제를 풀었다.
class Solution {
fun solution(numbers: IntArray): Double {
var average = numbers.sum().toDouble() / numbers.size
return average
}
}
내가 풀었던 방식이다. 그런데 알고보니 평균을 구하는 메소드를 이용하면 더 간편하다는것을 알았다.
다른사람들이 푼 방식을 보니 numbers.average() 를 이용하면 되었다.
따라서 내생각에도 아래 코드가 더 적절한것 같다.
class Solution {
fun solution(numbers: IntArray): Double = numbers.average()
}
# 계산기 만들기 (Lv3)
- Lv 3
- 객체를 주입해요
- addOperation메소드는 AddOperation객체를 매개변수로 입력받아요
- main.kt의 결과가 정상적으로 출력되도록 ##답안##을 작성해주세요
package src.CalculatorLv3
fun main(){
val calc = Calculator()
println("계산기를 실행합니다.")
println("첫번째 숫자를 입력해 주세요")
var num1 = readLine()!!.toDouble()
println("두번째 숫자를 입력해 주세요")
var num2 = readLine()!!.toDouble()
println("연산자를 입력해 주세요.")
var operator = readLine()!!.toString()
var result = 0.0
when (operator){
"+" -> result = calc.add(AddOperation(), num1, num2)
"-" -> result = calc.minus(MinusOperation(), num1, num2)
"*" -> result = calc.multiply(MultiplyOperation(), num1, num2)
"/" -> result = calc.devide(DivideOperation(), num1, num2)
"%" -> result = calc.rest(RestOperation(), num1, num2)
}
println("${num1}과 ${num2}의 ${operator} 결과는 ${result} 입니다.")
}
class Calculator {
fun add (aaa: AddOperation, num1:Double, num2:Double):Double{
return aaa.operate(num1, num2)
}
fun minus (bbb: MinusOperation, num1:Double, num2:Double):Double{
return bbb.operate(num1, num2)
}
fun multiply (ccc: MultiplyOperation, num1:Double, num2:Double):Double{
return ccc.operate(num1, num2)
}
fun devide (ddd: DivideOperation, num1:Double, num2:Double):Double{
return ddd.operate(num1, num2)
}
fun rest (eee: RestOperation, num1:Double, num2:Double):Double{
return eee.operate(num1, num2)
}
}
class AddOperation{
fun operate(num1: Double, num2: Double): Double = (num1 + num2).toDouble()
}
class MinusOperation{
fun operate(num1: Double, num2: Double): Double = (num1 - num2).toDouble()
}
class MultiplyOperation{
fun operate(num1: Double, num2: Double): Double = (num1 * num2).toDouble()
}
class DivideOperation{
fun operate(num1: Double, num2: Double): Double = (num1 / num2).toDouble()
}
class RestOperation{
fun operate(num1: Double, num2: Double): Double = (num1 % num2).toDouble()
}
혼자서 머리싸매고 어떻게든 해결해 보려 했지만 몇시간이 흘러도 도저히 답이 보이지 않고 해결방법을 알 수 없어서,
튜터님의 도움을 받았다.
문제는 class Calculator 클래스와 class AddOperation의 연결을 어떻게 해야 할지에 대해서는
class Calculator {
fun add (aaa: AddOperation, num1:Double, num2:Double):Double{
return aaa.operate(num1, num2)
}
로 해결할 수 있었고,
결과부분에서는
result = calc.add(AddOperation(), num1, num2)
로 해결할 수 있었다.
그렇게 똑같이 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 동일하게 만들어서 드디어 완성할 수 있게 되었다. ㅜㅜ
'📒 TIL - Today I Learned' 카테고리의 다른 글
20231211 / 키오스크 만들기 (0) | 2023.12.11 |
---|---|
20231209 / 계산기 코드분석 / 다형성 (1) | 2023.12.09 |
20231206 / 계산기 만들기 (0) | 2023.12.06 |
20231205 / 두 수의 나눗셈 / Kotlin 강의 필기 (1) | 2023.12.05 |
20231204 / 2주차 시작과 목표 / Kotlin 강의 필기 (1) | 2023.12.04 |
블로그의 정보
꿈틀꿈틀 개발일기
jeongminy