AtCoder Beginner Contest 093 C - Same Integers【Python】
AtCoder Beginner Contest 093 C - Same Integers
AtCoder ProblemsのRecommendationでDifficulty: 312、Solve Probability: 51%でした。
ABC = list(map(int, input().split())) ABC = sorted(ABC) A, B, C = ABC count = 0 #2番目に大きい数が最大値と等しくなるまで+1の操作を行う while C > B: A += 1 B += 1 count += 1 #e.g. (10, 10, 7) or (10, 10, 8) #最小値が最大値もしくは最大値-1に等しくなるまで+2の操作を行う left = C - A count += left//2 left -= (left//2) * 2 #e.g.(10, 10, 9) => (11, 11, 9) => (11, 11, 11) #最小値が最大値-1の場合+1の操作と+2の操作を行う if left == 1: count += 2 print(count)
いくつかのケースを考えた結果、2番目に大きい数を最大値に合わせ+1の操作をしてから残りの+2の回数を求めれば良いとの方針になりましたが闇雲に解いたという感じです。
ユーザー解説によると、最初に偶奇をあわせて+1の操作を1回以下行い残りは最大値に合わせて+2の回数を求めれば良いとのことでスッキリしました。