2022. 10. 1. 08:51ใํ๋ก๊ทธ๋๋จธ์ค-Swift
ํ๋ก๊ทธ๋๋จธ์ค - ๋คํธ๊ฒ์(Swift)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/17682
๋์ ํ์ด
์ ์ธ์ ์ผ๋ก ํผ ๊ฒ์ด์๋ ๋ฌธ์ ์ ์๊ตฌ์ฌํญ ๊ทธ๋๋ก ์ ์ฐจ์ ์ผ๋ก ํ์๋ค
switch์ if๋ฌธ ๋๋ฐฐ๋ก ์ธํ ๋ณ๋ก ์ข์ง์์ ์ฝ๋์ง๋ง ๊ทธ๋๋ ํ์๋ค๋ ๊ฒ์ ์์๋ฅผ ๋๋ ค๊ณ ํ๋ค! ๐ช
import Foundation
func solution(_ dartResult:String) -> Int {
var idx = -1
var arr = [Int](repeating:0, count: 3)
var makeNum = ""
for x in dartResult {
if x.isNumber {
makeNum += String(x)
} else {
switch x {
case "S":
idx += 1
arr[idx] = Int(makeNum)!
arr[idx] = Int(pow(Double(arr[idx]), 1.0))
case "D":
idx += 1
arr[idx] = Int(makeNum)!
arr[idx] = Int(pow(Double(arr[idx]), 2.0))
case "T":
idx += 1
arr[idx] = Int(makeNum)!
arr[idx] = Int(pow(Double(arr[idx]), 3.0))
default:
break
}
if x == "*" {
if idx == 0 {
arr[idx] *= 2
} else {
arr[idx] *= 2
arr[idx-1] *= 2
}
} else if x == "#" {
arr[idx] *= -1
}
makeNum = ""
}
}
print(arr)
return arr.reduce(0, +)
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด
split์ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ์ ์ธ์ ์ผ๋ก ๋ง๋ ํ์ด์ด๋ค.
์๋ก ๋ค๋ฅธ ์ปฌ๋ ์ ๋ค์ ๋ํด์ zip์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ํ์ฌ ํ์ํ๊ณ ์๋ score์์ ๋ค์ ์ธ๋ฑ์ค์ ํน์ ๋ฌธ์์ด ํฌํจ์ฌ๋ถ์ ๋ฐ๋ผ ์ฆ๊ฐ์ํค๋ ๊ฒ๋ค์ ๋ํด ์ต์ํด์ง ํ์๊ฐ ์๋ค.
import Foundation
func solution(_ dartResult:String) -> Int {
let numberArr = dartResult.split(whereSeparator: { $0.isLetter || $0 == "*" || $0 == "#" })
let letterArr = dartResult.split(whereSeparator: { $0.isNumber })
var totalScore = 0
for (i, (number, letter)) in zip(numberArr, letterArr).enumerated() {
var score = 0
if let num = Int(number) {
score = letter.contains("D") ? num * num : letter.contains("T") ? num * num * num : num
}
if letter.contains("*") {
score *= 2
} else if letter.contains("#") {
score = -score
}
if i != 2 {
if letterArr[i+1].contains("*") {
score *= 2
}
}
totalScore += score
}
return totalScore
}
ํผ๋๋ฐฑ
split๋ฉ์๋๋ฅผ ํตํด ์ชผ๊ฐ๋ฉด ๋ฌด์กฐ๊ฑด ๊ทธ ์ชผ๊ฐ ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ๋๋๋ ์ค ์์๋ค. ํ์ง๋ง ์กฐ๊ฑด์ด ์ฐ์์ผ๋ก ๋ถํฉ๋๋ค๋ฉด ๋ฌถ์ฌ์ง ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ์ชผ๊ฐ์ง๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ("1#*3"์ whereSeparator: {$0 == "#" || $0 == "*")๋ก ํ๋ค๋ฉด [1, 3]์ด ๋๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค-Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์ฒด์ก๋ณต(Swift) (0) | 2022.10.02 |
---|---|
๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ - ํ๋ก๊ทธ๋๋จธ์ค(Swift) (0) | 2022.10.02 |
์คํจ์จ - ํ๋ก๊ทธ๋๋จธ์ค(Swift) (1) | 2022.09.30 |
์์ ํ์ - ํ๋ก๊ทธ๋๋จธ์ค(Swift) (2) | 2022.09.29 |
2016๋ - ํ๋ก๊ทธ๋๋จธ์ค(Swift) (0) | 2022.09.28 |