1864๋ฒ: ๋ฌธ์ด ์ซ์
๋ถ์
- ๊ฐ ์๋ฆฟ์๋๋ก 8์ n์น์ ๊ณฑํ ๊ฐ์ ๋ชจ๋ ๋ํ๋ค.
- ์ฒ์์ ๊ธฐํธ๋ฅผ ์ฃผ์ด์ง ์ซ์๋ก ๋ณํํ ๋ค swift์์ ์ ๊ณตํ๋
radix
๋ฅผ ํ์ฉํด ๋ณํํ๋ ค ํ์ง๋ง
- -1์ ์กด์ฌ ๋๋ฌธ์ ์ด์ฉ ์ ์์ด ๊ฐ ์๋ฆฟ์๋๋ก ๊ณ์ฐํด์ผ ํ์
- n์ ์ต๋๊ฐ(maxPow)์ ์
๋ ฅ ์๋ฆฟ์ - 1 ์ด๋ค
- ์๋ฅผ ๋ค์ด 3์๋ฆฌ์ 8์ง์๊ฐ ์
๋ ฅ๋๋ฉด ๊ฐ ์๋ฆฟ์์ 8์ 2์น, 8์ 1์น, 8์ 0์น์ ๊ณฑํ ๊ฒ์
pow()
์ฌ๋ฌ ๋ฉ์๋ ์ค์์ ๋ฆฌํดํ์
์ด decimal์ ๋ฐํํ์ง ์๋๋ก ์ฃผ์ํ๋ค. - Int๋ก์ ๋ณํ์ด ์ด๋ ต๊ธฐ ๋๋ฌธ..
- ๋๋ `func pow(_ lhs: Float, _ rhs: Float) -> Float` ์ฌ์ฉ
ํ์ด
func q1864() { // ๋ฌธ์ด ์ซ์
while true {
let input = readLine()!
if input == "#" {
break
}
var octoNum = 0
var maxPow = input.count - 1
for index in input.indices {
let char = input[index]
let octa = pow(8.0, Float(maxPow))
switch char {
case "-":
octoNum += 0 * Int(octa)
case "\\":
octoNum += 1 * Int(octa)
case "(":
octoNum += 2 * Int(octa)
case "@":
octoNum += 3 * Int(octa)
case "?":
octoNum += 4 * Int(octa)
case ">":
octoNum += 5 * Int(octa)
case "&":
octoNum += 6 * Int(octa)
case "%":
octoNum += 7 * Int(octa)
case "/":
octoNum += -1 * Int(octa)
default:
break
}
maxPow -= 1
}
print(octoNum)
}
}