๋ฐ์ํ
๋คํญ์ ๋ํ๊ธฐ
๋ฌธ์ ์ค๋ช
ํ ๊ฐ ์ด์์ ํญ์ ํฉ์ผ๋ก ์ด๋ฃจ์ด์ง ์์ ๋คํญ์์ด๋ผ๊ณ ํฉ๋๋ค. ๋คํญ์์ ๊ณ์ฐํ ๋๋ ๋๋ฅํญ๋ผ๋ฆฌ ๊ณ์ฐํด ์ ๋ฆฌํฉ๋๋ค. ๋ง์ ์ผ๋ก ์ด๋ฃจ์ด์ง ๋คํญ์ 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" : "")
}
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์์ ์ง๋ (0) | 2023.01.02 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์จ์ด์๋ ์ซ์์ ๋ง์ (2) (0) | 2023.01.02 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์ต๋๊ฐ ๋ง๋ค๊ธฐ (2) (0) | 2023.01.02 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์บ๋ฆญํฐ์ ์ขํ (0) | 2023.01.02 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์ง์ฌ๊ฐํ ๋์ด ๊ตฌํ๊ธฐ (0) | 2022.12.30 |