๋ฐ์ํ
์ปจํธ๋กค ์ ํธ
๋ฌธ์ ์ค๋ช
์ซ์์ "Z"๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ๋ด๊ธด ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋๋ค. ๋ฌธ์์ด์ ์๋ ์ซ์๋ฅผ ์ฐจ๋ก๋๋ก ๋ํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ "Z"๊ฐ ๋์ค๋ฉด ๋ฐ๋ก ์ ์ ๋ํ๋ ์ซ์๋ฅผ ๋บ๋ค๋ ๋ป์ ๋๋ค. ์ซ์์ "Z"๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ง ๋, ๋จธ์ฑ์ด๊ฐ ๊ตฌํ ๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ๋ณด์ธ์.
์ ํ ์ฌํญ
- 1 ≤ s์ ๊ธธ์ด ≤ 200
- -1,000 < s์ ์์ ์ค ์ซ์ < 1,000
- s๋ ์ซ์, "Z", ๊ณต๋ฐฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- s์ ์๋ ์ซ์์ "Z"๋ ์๋ก ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
- ์ฐ์๋ ๊ณต๋ฐฑ์ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- 0์ ์ ์ธํ๊ณ ๋ 0์ผ๋ก ์์ํ๋ ์ซ์๋ ์์ต๋๋ค.
- s๋ "Z"๋ก ์์ํ์ง ์์ต๋๋ค.
- s์ ์์๊ณผ ๋์๋ ๊ณต๋ฐฑ์ด ์์ต๋๋ค.
- "Z"๊ฐ ์ฐ์ํด์ ๋์ค๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
s | result |
"1 2 Z 3" | 4 |
"10 20 30 40" | 100 |
"10 Z 20 Z 1" | 1 |
"10 Z 20 Z" | 0 |
"-1 -2 -3 Z" | -3 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- 2 ๋ค์ Z ์ด๊ธฐ ๋๋ฌธ์ 2๊ฐ ์ง์์ง๊ณ , 1 + 3 = 4๋ฅผ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- 10 + 20 + 30 + 40 = 100์ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- "10 Z 20 Z 1"์์ 10 ๋ค์ Z, 20 ๋ค์ Z๋ก 10, 20์ด ์ง์์ง๊ณ 1๋ง ๋ํ์ฌ 1์ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #4, #5
์ค๋ช ์๋ต
์ ์ถ
import Foundation
func solution(_ s:String) -> Int {
var s = s.split(separator: " ").map{String($0)}
while s.contains("Z"){
var index = s.firstIndex(of: "Z")!
if index - 1 >= 0 {
s.remove(at: index)
s.remove(at: index - 1)
}else{
s.remove(at: index)
}
}
return s.map{Int($0)!}.reduce(0, +)
}
์ ๋ ฅ ๋ฌธ์์ด์ ๊ณต๋ฐฑ๊ธฐ์ค์ผ๋ก ๋๋ ํ String ๋ฐฐ์ด s๋ก ์์ฑ
s์ Z๊ฐ ์์ ๋๊น์ง ๋ฐ๋ณตํ๋ฉฐ, Z๊ฐ ์ฒ์์ผ๋ก ๋ฑ์ฅํ๋ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ ํ ์ธ๋ฑ์ค-1์ด 0๋ณด๋ค ํฌ๋ฉด Z์ Z์์ ์์๋ฅผ ์ง์ด๋ค
์ธ๋ฑ์ค-1์ด 0๋ณด๋ค ์์ผ๋ฉด Z๋ง ์ง์ด๋ค
์ดํ s๋ฅผ map ํจ์๋ฅผ ์ฌ์ฉํ์ฌ Intํ ๋ฐฐ์ด๋ก ๋ฐ๊พผ ํ, reduceํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํฉ์ ๊ตฌํ๋ค
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์ง์ฌ๊ฐํ ๋์ด ๊ตฌํ๊ธฐ (0) | 2022.12.30 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ๋ฐฐ์ด ์์์ ๊ธธ์ด (0) | 2022.12.30 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์์ธ์๋ถํด (0) | 2022.12.30 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์จ์ด์๋ ์ซ์์ ๋ง์ (1) (0) | 2022.12.30 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ๋ฌธ์์ด ์ ๋ ฌํ๊ธฐ (1) (0) | 2022.12.30 |