[231201] Today I Learned πŸŽ„

YoungHyun KimΒ·2023λ…„ 12μ›” 1일
2

TIL ✍️

λͺ©λ‘ 보기
9/68

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 햄버거 λ§Œλ“€κΈ°

  • μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œμ˜ μ •μ˜ 뢀뢄을 잘 μ‚΄νŽ΄λ³΄λ©΄, 닡이 λ‚˜μ˜¨λ‹€.

    • ν•„μš”μ— λ”°λΌμ„œ μ—¬λŸ¬ μ‚¬μ΄νŠΈλ“€μ΄ λ§Žμ€ 도움이 되곀 ν•˜λŠ”λ°, Apple 곡식 ν™ˆνŽ˜μ΄μ§€λž‘ Swift github이 λ§Žμ€ 도움이 λœλ‹€.
    • 미리미리 μ–΄λ–€ μ‹μœΌλ‘œ λ‘˜λŸ¬λ³΄λ©΄ 쒋은 정보λ₯Ό 얻을 수 μžˆλŠ”μ§€ νŒŒμ•…ν•˜κΈ° μœ„ν•΄ 가끔 λ“€λ €μ„œ λ‘˜λŸ¬λ³΄λ„λ‘ ν•˜μž~
  • μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œμ— 따라 컴파일러 버전도 잘 따져봐야 싀행이 λ˜λŠ”μ§€ μ•ˆλ˜λŠ”μ§€ μ•Œ 수 μžˆλ‹€.

  • μŠ€νƒμ„ μ½”λ“œλ‘œ κ΅¬ν˜„ν•˜λŠ” 방법을 μ•Œμ•˜λ‹€.(LIFO)

  • .suffix(_ k:) , .removeSubrange(_ Range: ) λ©”μ†Œλ“œ μ‚¬μš© 방법을 μ•Œ 수 μžˆμ—ˆλ‹€.

  • .replacingOccurences(of: , with: ) λ©”μ†Œλ“œλŠ” 쑰건에 λ§žλŠ” λͺ¨λ“  뢀뢄듀을 ν•œ λ²ˆμ— λ³€ν™˜μ‹œμΌœ 버리더라...


SPARTA λ‚΄λ°°μΊ  개인 과제 (계산기)

import Foundation

class Calculator {
    func calculate(_ inputOperator: String, _ firstNumber: Double, _ secondNumber: Double) -> Double {
    
        if inputOperator == "+" {
            let op = AddOperation()
            return op.operate(firstNumber, secondNumber)
        } else if inputOperator == "-" {
            let op = SubstractOperation()
            return op.operate(firstNumber, secondNumber)
        } else if inputOperator == "*" {
            let op = MultiplyOperation()
            return op.operate(firstNumber, secondNumber)
        } else if inputOperator == "/" {
            let op = DivideOperation()
            return op.operate(firstNumber, secondNumber)
        } else if inputOperator == "%" {
            return firstNumber.truncatingRemainder(dividingBy: secondNumber)
        } else {
            print("μ μ ˆν•˜μ§€ μ•Šμ€ μ—°μ‚°μž μž…λ ₯μž…λ‹ˆλ‹€.")
            return 0 }
    }
}

class AddOperation {
    func operate(_ firstNumber: Double, _ secondNumber: Double) -> Double {
        return firstNumber + secondNumber
    }
}

class SubstractOperation {
    func operate(_ firstNumber: Double, _ secondNumber: Double) -> Double {
        return firstNumber - secondNumber
    }
}

class MultiplyOperation {
    func operate(_ firstNumber: Double, _ secondNumber: Double) -> Double {
        return firstNumber * secondNumber
    }
}

class DivideOperation {
    func operate(_ firstNumber: Double, _ secondNumber: Double) -> Double {
        if secondNumber == 0 {
            print("0μœΌλ‘œλŠ” λ‚˜λˆŒ 수 μ—†μŠ΅λ‹ˆλ‹€!")
            return 0
        } else {
            return firstNumber / secondNumber
        }
    }
}


func main() -> Double {
    print("μ‚¬μΉ™μ—°μ‚°μž 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•œ 사칙연산 식을 μž…λ ₯ν•˜μ„Έμš”. 단 μˆ«μžμ™€ μ—°μ‚°κΈ°ν˜ΈλŠ” 곡백으둜 κ΅¬λΆ„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.")
    
    let input = readLine()
    var x = 0.0, y = 0.0, op = ""
    
    if let input = input {
        let inputs = input.components(separatedBy: " ")
        
        guard !inputs[0].isEmpty else {
            print("μž…λ ₯ 값이 μ—†μŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μ‹œλ„ν•΄μ£Όμ„Έμš”.")
            return 0
        }
        x = Double(inputs[0])!
        op = inputs[1]
        y = Double(inputs[2])!
    } // μž…λ ₯으둜 받은 "(μ •μˆ˜) (μ—°μ‚°μž) (μ •μˆ˜)" ν˜•νƒœμ˜ λ¬Έμžμ—΄μ—μ„œ 각각을 μΆ”μΆœν•΄μ„œ 미리 μ„ μ–Έν•΄λ‘μ—ˆλ˜ λ³€μˆ˜μ— λŒ€μž…
    
    let calc = Calculator() // Calculator 객체 생성
    
    let result = calc.calculate(op, x, y) // result λ³€μˆ˜μ— Calculate 클래슀 λ‚΄λΆ€μ˜ calculate ν•¨μˆ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό μ €μž₯
    
    print(result) // κ²°κ³Ό 좜λ ₯
    
//    print("방금 κ³„μ‚°ν•œ 값에 μΆ”κ°€μ μœΌλ‘œ 연산을 μ§„ν–‰ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?") ** λ―Έκ΅¬ν˜„κΈ°λŠ₯
    
    return result
}
  • readLine() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ Terminal μƒμ—μ„œ μž…λ ₯을 λ„£μ–΄ ꡬ동할 수 μžˆλ„λ‘ λ§Œλ“€μ—ˆλ‹€. (μˆ«μžμ™€ μ—°μ‚°μž 사이에 곡백이 무쑰건 ν•„μš”)
  • https://github.com/y0unghyun/SpartaBaseCamp μ—μ„œ λ‚΄μš©μ„ λ³Ό 수 μžˆλ‹€.
  • main() ν•¨μˆ˜ λΆ€λΆ„μ—μ„œ x, y 수λ₯Ό μ €μž₯ν•  λ•Œ κ°•μ œμ μœΌλ‘œ μ˜΅μ…”λ„ ν•΄μ œν•˜λŠ” 것을 λ³Ό 수 μžˆλ‹€. 쑰금 더 μƒκ°ν•΄μ„œ μ˜΅μ…”λ„ λ°”μΈλ”©μœΌλ‘œ ν•΄λ‹Ή 뢀뢄을 ν•΄κ²°ν•΄μ•Όκ² λ‹€.(λΌλŠ” 생각을 ν•˜λŠ” 쀑)
  • ν•΄μ„€ μ˜μƒμ—μ„œλŠ” μ˜μ‘΄μ„± μ—­μ „μ˜ 원칙을 μƒκ°ν•˜λ©°, ν•œ 단계 더 μΆ”μƒν™”λœ 클래슀λ₯Ό λ§Œλ“€μ–΄ 계산기λ₯Ό κ΅¬ν˜„ν•˜λ„λ‘ 예제λ₯Ό μ£Όμ…¨μœΌλ‹ˆ, 주말을 ν™œμš©ν•΄μ„œ ν•΄λ‹Ή 뢀뢄에 λŒ€ν•΄ 더 μ•Œμ•„λ³΄λŠ” μ‹œκ°„μ„ κ°€μ Έμ•Όκ² λ‹€.
profile
iOS κ°œλ°œμžκ°€ 되고 μ‹Άμ–΄μš”

2개의 λŒ“κΈ€

comment-user-thumbnail
2023λ…„ 12μ›” 2일

쒋은 κΈ€ 보고 많이 κ³΅λΆ€ν–ˆμŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œλ„ 쒋은 κΈ€ 많이 μ¨μ£Όμ„Έμš”~ πŸ‘‘

1개의 λ‹΅κΈ€