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回繰り返した値を出力。