LoginSignup
0
1

More than 1 year has passed since last update.

Atcoder ABC209 Python C問題振り返り

Last updated at Posted at 2021-07-12

目的

間違えてしまった問題の備忘録的なものを作りたいと思い投稿しました。自分の間違えたコードと、答えを見て修正したコードを載せるようと思っています。反面教師にしてください(笑)
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で割るのではなく、毎回割ってしまった方が良さげですね。今回の学びです。

このコードの書き方良くないなぁと感じたり、私の認識で間違っているところがあったらどんどん教えていただきたいです。

0
1
2

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
0
1