LoginSignup
1
1

More than 3 years have passed since last update.

【Swift】AtCoder Beginner Contest 192

Posted at

AtCoder Beginner Contest 192

下記リンクになります。
https://atcoder.jp/contests/abc192

A Star

問題
https://atcoder.jp/contests/abc192/tasks/abc192_a

import Foundation

func readInts(separate: String = " ") -> [Int] {
    readLine()!.components(separatedBy: " ").map { Int($0)! }
}

// MARK: - Main
func main() {
    let X = readInts()
    print(100-(X[0] % 100))
}

// MARK: - Run
main()

入力値Xを100で割った余りを100から引くことによって解を求める。

B uNrEaDaBlE sTrInG

問題
https://atcoder.jp/contests/abc192/tasks/abc192_b

func main() {
    let S: String = readLine()!
    var count = 1
    var isUnreadableString = true
    for string in S {
        let character: Character = string
        if count % 2 == 0 {
            if !character.isUppercase {
                isUnreadableString = false
            }
        } else {
            if !character.isLowercase {
                isUnreadableString = false
            }
        }
        count = count + 1
    }
    if isUnreadableString {
        print("Yes")
    } else {
        print("No")
    }
}

// MARK: - Run
main()

C Kaprekar Number

問題
https://atcoder.jp/contests/abc192/tasks/abc192_c

// 大きい順にソート
func g1(_ n: [String]) -> Int {
    let tmp: [String] = n.sorted(by: >)
    return Int(tmp.joined())!
}

// 小さい順にソート
func g2(_ n: [String]) -> Int {
    let tmp: [String] = n.sorted()
    return Int(tmp.joined())!
}

// 差分求める
func f(_ n: Int) -> Int {
    let nStr: [String] = String(n).compactMap(String.init)
    return g1(nStr) - g2(nStr)
}


// 入力
let NK: [Int] = readLine()!.split(separator: " ").map { Int($0)! }
let (N, K) = (NK[0], NK[1])

// main
var an = N
for _ in 0..<K {
    an = f(an)
}
print(an)

昇順、降順でソートした値の差分を求める問題。
その差分を再度昇順降順にソートして、差分を求めるをK回繰り返した値を出力。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1