#目的
間違えてしまった問題の備忘録的なものを作りたいと思い投稿しました。自分の間違えたコードと、答えを見て修正したコードを載せるようと思っています。反面教師にしてください(笑)
Pythonで競プロを始めた方の役に立てれば幸いです。
#自分の提出(TLEしてしまいました)
N = int(input())
C = list(map(int,input().split()))
flg = 10**9 + 7
C1 = sorted(C)
C2 = []
for i,j in enumerate(C1):
C2.append(j-i)
ans = 1
for i in C2:
ans *= i
print(ans%flg)
#修正後の提出(AC確認済み)
N = int(input())
C = list(map(int, input().split()))
C.sort()
ans=1
for i in range(N):
ans = ans * (C[i] - i) % 1000000007
print(ans)
#感想
考え方はあっていたのに悔しいです...
for文を2つ書いているところを、修正後のようにうまく1つにできればよかったようです。解説をみて納得しました。
あと、最後に1000000007で割るのではなく、毎回割ってしまった方が良さげですね。今回の学びです。
このコードの書き方良くないなぁと感じたり、私の認識で間違っているところがあったらどんどん教えていただきたいです。