๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.0] ๋ฌธ์ž์—ด ๊ณ„์‚ฐํ•˜๊ธฐ

by hyebin (Helia) 2023. 1. 12.
๋ฐ˜์‘ํ˜•
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.0 ๋ชจ์Œ

๋ฌธ์ž์—ด ๊ณ„์‚ฐํ•˜๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

my_string์€ "3 + 5"์ฒ˜๋Ÿผ ๋ฌธ์ž์—ด๋กœ ๋œ ์ˆ˜์‹์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด my_string์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆ˜์‹์„ ๊ณ„์‚ฐํ•œ ๊ฐ’์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • ์—ฐ์‚ฐ์ž๋Š” +, -๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘๊ณผ ๋์—๋Š” ๊ณต๋ฐฑ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆซ์ž๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ์ˆ˜์‹์€ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 5 ≤ my_string์˜ ๊ธธ์ด ≤ 100
  • my_string์„ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ด๊ฐ’์€ 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • my_string์˜ ์ค‘๊ฐ„ ๊ณ„์‚ฐ ๊ฐ’์€ -100,000 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • ๊ณ„์‚ฐ์— ์‚ฌ์šฉํ•˜๋Š” ์ˆซ์ž๋Š” 1 ์ด์ƒ 20,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
    • my_string์—๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ์ ์–ด๋„ ํ•˜๋‚˜ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • return type ์€ ์ •์ˆ˜ํ˜•์ž…๋‹ˆ๋‹ค.
  • my_string์˜ ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž๋Š” ๊ณต๋ฐฑ ํ•˜๋‚˜๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

my_string result
"3 + 4" 7

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • 3 + 4 = 7์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ œ์ถœ

import Foundation

func solution(_ my_string:String) -> Int {
    var string_value = my_string.split(separator: " ").map{String($0)}
    var answer = Int(string_value[0])!
    
    for index in stride(from: 1, to: string_value.count, by: 2) {
        if string_value[index] == "+"{
            answer += Int(string_value[index+1])!
        }else{
            answer -= Int(string_value[index+1])!
        }
    }
    return answer
}
์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๊ณต๋ฐฑ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ  String ๋ฐฐ์—ด๋กœ ์ €์žฅํ•œ๋‹ค.
answer์— ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ Int๋กœ ๋ณ€ํ™˜ํ•ด ๋„ฃ์–ด์ค€๋‹ค.

for๋ฌธ์„ ์‚ฌ์šฉํ•ด index๋ฅผ 1๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊นŒ์ง€ 2์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ๋ฐ˜๋ณตํ•œ๋‹ค. (์ˆซ์ž, ์—ฐ์‚ฐ์ž, ์ˆซ์ž ์ˆœ์„œ๋กœ ๋ฐ˜๋ณต๋˜๊ธฐ ๋•Œ๋ฌธ)
์—ฐ์‚ฐ์ž๊ฐ€ + ๋ผ๋ฉด ๋‹ค์Œ ์ธ๋ฑ์Šค์˜ ์ˆซ์ž์™€ ๋ง์…ˆ์„, ์•„๋‹ˆ๋ผ๋ฉด ๋บ„์…ˆ์„ ํ•œ๋‹ค.

๋‹ค๋ฅธ ํ’€์ด

import Foundation

func solution(_ my_string: String) -> Int {
    return my_string.replacingOccurrences(of: "- ", with: "-")
        .replacingOccurrences(of: "+", with: "")
        .split(separator: " ")
        .map { Int($0)! }
        .reduce(0, +)
}
replacingOccurrences()์„ ์ด์šฉํ•ด "- "๋Š” "-"๋กœ, "+"๋Š” ์ง€์›Œ์ค€๋‹ค. (ex. 5 + 2 - 3 => 5 2 -3)
์ดํ›„ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ ํ›„ map ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด Intํ˜• ๋ฐฐ์—ด๋กœ ๋งŒ๋“ ๋‹ค.
reduce ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐฐ์—ด์„ ๋”ํ•ด์ค€๋‹ค.
๋ฐ˜์‘ํ˜•