SwiftでAtCoder Beginner Contest 158の[C - Tax Increas]を解きました。
問題内容
問題文
消費税率が 8 %のとき A 円、10 %のとき B 円の消費税が課されるような商品の税抜き価格を求めてください。
ただし、税抜き価格は正の整数でなければならないものとし、消費税の計算において小数点以下は切り捨てて計算するものとします。
条件を満たす税抜き価格が複数存在する場合は最も小さい金額を出力してください。また、条件を満たす税抜き価格が存在しない場合は -1 と出力してください。
解答コード
import Foundation
let aa = readLine()!.split(separator: " ").map{ Double($0)! }
var array : [Int] = []
let minA = Int(ceil(aa[0] / 0.08))
let maxA = Int(floor((aa[0] + 1) / 0.08))
let minB = Int(ceil(aa[1] / 0.1))
let maxB = Int(floor((aa[1] + 1) / 0.1))
for i in minA...maxA - 1{
array.append(i)
}
for i in minB...maxB - 1{
array.append(i)
}
var set = Set<Int>()
let repeated = NSOrderedSet(array: array.filter { !set.insert($0).inserted }).array
print(repeated.first ?? -1)
配列の重複部分だけ取り出す際コードは以下のQAを参考にしました。
Swiftのお役立ち情報