MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - [์นด์นด์˜ค ์ธํ„ด] ์ˆ˜์‹ ์ตœ๋Œ€ํ™” ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - [์นด์นด์˜ค ์ธํ„ด] ์ˆ˜์‹ ์ตœ๋Œ€ํ™”

MUKER 2023. 5. 29. 21:22
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


์„ฑ๊ณต ํ’€์ด

func solution(_ expression:String) -> Int64 {
    
    var arr = [String]()
    let order = [
        ["*","+","-"],["*","-","+"],
        ["+","*","-"],["+","-","*"],
        ["-","*","+"],["-","+","*"]
    ]
    var result = 0
    
    // ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž ์กฐ๊ฐ ๋‚ด๊ธฐ
    var temp = ""
    for i in expression {
        if !i.isNumber {
            arr.append(temp)
            temp.removeAll()
            arr.append(String(i))
        } else {
            temp.append(i)
        }
    }
    arr.append(temp)
    
    // ์šฐ์„ ์ˆœ์œ„ ๋ณ„๋กœ ์—ฐ์‚ฐํ•˜๊ธฐ
    for i in 0..<order.count {
        var num = arr
        var tempNum = num
        for j in 0..<3 {
            for k in 0..<num.count {
                // ํ•ด๋‹น ์—ฐ์‚ฐ์ž์ผ ๋•Œ
                if num[k]==order[i][j] {
                    if order[i][j] == "*" {
                        num[k+1] = String(Int(num[k-1])! * Int(num[k+1])!)
                        tempNum[k+1] = num[k+1]
                        tempNum[k-1] = ""
                        tempNum[k] = ""
                    } else if order[i][j] == "+" {
                        num[k+1] = String(Int(num[k-1])! + Int(num[k+1])!)
                        tempNum[k+1] = num[k+1]
                        tempNum[k-1] = ""
                        tempNum[k] = ""
                    } else if order[i][j] == "-" {
                        num[k+1] = String(Int(num[k-1])! + (-Int(num[k+1])!))
                        tempNum[k+1] = num[k+1]
                        tempNum[k-1] = ""
                        tempNum[k] = ""
                    }
                }
            }
            num = tempNum.filter { !$0.isEmpty }
            tempNum = num
        }
        result = max(result, abs(Int(num[0])!))
    }
    return Int64(result)
}

ํ’€์ด ํ‚ค์›Œ๋“œ

- ์ฃผ์–ด์ง„ expression๋ฌธ์ž์—ด์„ ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž๋กœ ๋‚˜์ค˜ arr๋ฐฐ์—ด์— ๋‹ด์Šต๋‹ˆ๋‹ค.
ex) ["100","*","200","+","500"]

- order๋ฐฐ์—ด์— ์—ฐ์‚ฐ์ž์˜ 6๊ฐ€์ง€ ๊ฒฝ์šฐ์— ์ˆ˜๋ฅผ ๋‹ด์Šต๋‹ˆ๋‹ค.

- ๋งŒ๋“ค์–ด ๋†“์€ arr๋ฐฐ์—ด์„ ์ตœ์ƒ๋‹จ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋‘๊ณ  ๋ฌธ์ž๊ฐ€ ํ•˜๋‚˜์”ฉ ๋‚˜์˜ฌ ๋•Œ
6๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐจ๋ก€๋กœ ๋ฐ˜๋ณต ์‹œํ‚ต๋‹ˆ๋‹ค.
๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ *,+,- ์ˆœ์„œ๋กœ ๋˜์–ด ์žˆ๋‹ค๋ฉด arr๋ฌธ์ž์—ด์„ ๋Œ๋ฉฐ * ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚˜์™”์„ ๋•Œ
* ์˜ ์•ž ๋’ค ์ˆซ์ž๋ฅผ ๊ณฑํ•˜๊ณ , ๋’ค ์ˆซ์ž ์ธ๋ฑ์Šค์— ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๊ฐ’์„ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.
๊ทธ ํ›„ ์•ž ์ˆซ์ž์™€ * ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋˜ ์ž๋ฆฌ์˜ ์ธ๋ฑ์Šค ๊ฐ’์€ ""๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

- * ์—ฐ์‚ฐ์ž์˜ ๊ณ„์‚ฐ์ด ๋‹ค ๋๋‚ฌ๋‹ค๋ฉด + ์—ฐ์‚ฐ์ž ๊ทธ ํ›„ - ์—ฐ์‚ฐ์ž๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ฒŒ ๋˜๊ณ 
๋นˆ ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ์ง€์šฐ๋ฉด ๋‚˜๋จธ์ง€ ๊ฐ’ ์ฆ‰ ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์˜ ์ˆ˜๋กœ ๊ตฌํ•œ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

- ์ด๋ ‡๊ฒŒ 6๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜, 6๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์ตœ๋Œ€๊ฐ’์„ ๋ฝ‘์•„๋‚ด๋ฉด ๋ฌธ์ œ๊ฐ€ ์›ํ•˜๋Š” ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.