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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.0] ๋‹คํ•ญ์‹ ๋”ํ•˜๊ธฐ

by hyebin (Helia) 2023. 1. 2.
๋ฐ˜์‘ํ˜•

๋‹คํ•ญ์‹ ๋”ํ•˜๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

ํ•œ ๊ฐœ ์ด์ƒ์˜ ํ•ญ์˜ ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์‹์„ ๋‹คํ•ญ์‹์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ•ญ์‹์„ ๊ณ„์‚ฐํ•  ๋•Œ๋Š” ๋™๋ฅ˜ํ•ญ๋ผ๋ฆฌ ๊ณ„์‚ฐํ•ด ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ง์…ˆ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹คํ•ญ์‹ polynomial์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋™๋ฅ˜ํ•ญ๋ผ๋ฆฌ ๋”ํ•œ ๊ฒฐ๊ด๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ๋ณด์„ธ์š”. ๊ฐ™์€ ์‹์ด๋ผ๋ฉด ๊ฐ€์žฅ ์งง์€ ์ˆ˜์‹์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

  • 0 < polynomial์— ์žˆ๋Š” ์ˆ˜ < 100
  • polynomial์— ๋ณ€์ˆ˜๋Š” 'x'๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • polynomial์€ 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ •์ˆ˜, ๊ณต๋ฐฑ, ‘x’, ‘+'๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ญ๊ณผ ์—ฐ์‚ฐ๊ธฐํ˜ธ ์‚ฌ์ด์—๋Š” ํ•ญ์ƒ ๊ณต๋ฐฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณต๋ฐฑ์€ ์—ฐ์†๋˜์ง€ ์•Š์œผ๋ฉฐ ์‹œ์ž‘์ด๋‚˜ ๋์—๋Š” ๊ณต๋ฐฑ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ํ•ญ์—์„œ ๋ณ€์ˆ˜๊ฐ€ ์ˆซ์ž ์•ž์— ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • " + 3xx + + x7 + "์™€ ๊ฐ™์€ ์ž˜๋ชป๋œ ์ž…๋ ฅ์€ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • "012x + 001"์ฒ˜๋Ÿผ 0์„ ์ œ์™ธํ•˜๊ณ ๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์ž์™€ ์ˆซ์ž ์‚ฌ์ด์˜ ๊ณฑํ•˜๊ธฐ๋Š” ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.
  • polynomial์—๋Š” ์ผ์ฐจ ํ•ญ๊ณผ ์ƒ์ˆ˜ํ•ญ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ„์ˆ˜ 1์€ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ด๊ฐ’์— ์ƒ์ˆ˜ํ•ญ์€ ๋งˆ์ง€๋ง‰์— ๋‘ก๋‹ˆ๋‹ค.
  • 0 < polynomial์˜ ๊ธธ์ด < 50

์ž…์ถœ๋ ฅ ์˜ˆ

polynomial result
"3x + 7 + x" "3x + 7 + x"
"x + x + x" "3x"

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

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

  • "3x + 7 + x"์—์„œ ๋™๋ฅ˜ํ•ญ๋ผ๋ฆฌ ๋”ํ•˜๋ฉด "4x + 7"์ž…๋‹ˆ๋‹ค.

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

  • "x + x + x"์—์„œ ๋™๋ฅ˜ํ•ญ๋ผ๋ฆฌ ๋”ํ•˜๋ฉด "3x"์ž…๋‹ˆ๋‹ค.

์ œ์ถœ

func solution(_ polynomial:String) -> String {
    var polynomial = polynomial.split(separator: " ").map{String($0)}
    var x_num = 0, num = 0
    var answer = ""

    for p in polynomial{
        if p.contains("x"){
            if p == "x"{
                x_num += 1
            }else{
                x_num += Int(p.filter{$0 != "x"})!
            }
        }else if p != "+"{
            num += Int(p)!
        }
    }
    if x_num == 0 {return "\(num)"}
    else if num == 0 {
        if x_num == 1 {return "x"}
        else {return "\(x_num)x"}
    }else{
        if x_num == 1 {return "x + \(num)"}
        else {return "\(x_num)x + \(num)"}
    }
}
๋‹คํ•ญ์‹์„ ๊ณต๋ฐฑ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„์–ด string ๋ฐฐ์—ด๋กœ ์ €์žฅํ•œ๋‹ค.
๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•˜๋ฉฐ x๊ฐ€ ์žˆ๋‹ค๋ฉด x_num์„, ์ˆซ์ž๋ผ๋ฉด num์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

x_num์ด 0์ด๋ผ๋ฉด (x๊ฐ€ ์—†์ด ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋‹คํ•ญ์‹) num์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
num์ด 0์ด๋ผ๋ฉด (x๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋‹คํ•ญ์‹) x_num์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
x_num๊ณผ num์ด ๋ชจ๋‘ 0์ด ์•„๋‹ˆ๋ฉด (x_num)x + num ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

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

func solution(_ polynomial: String) -> String {
    var xCount = 0
    var num = 0

    for s in polynomial.split(separator: " ") {
        if s.contains("x") {
            xCount += (s == "x" ? 1 : (Int(s.replacingOccurrences(of: "x", with: "")) ?? 0))
        } else if s != "+" {
            num += Int(s) ?? 0
        }
    }
    return (xCount != 0 ? xCount > 1 ? "\(xCount)x" : "x" : "") + (num != 0 ? "\((xCount != 0 ? " + " : ""))\(num)" : xCount == 0 ? "0" : "")
}

 

๋ฐ˜์‘ํ˜•