Bibi's DevLog ๐Ÿค“๐ŸŽ

[๋ฐฑ์ค€ 1864] ๋ฌธ์–ด ์ˆซ์ž ๋ณธ๋ฌธ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด Swift

[๋ฐฑ์ค€ 1864] ๋ฌธ์–ด ์ˆซ์ž

๋น„๋น„ bibi 2022. 9. 2. 11:44

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)
    }
}