質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1243閲覧

AtCoder「競プロ典型90問」の004-CrossSumのTLEを解消したいです。

Simmah_9130

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/09/14 07:55

前提・実現したいこと

お世話になります。
AtCoderの「競プロ典型90問」の004-CrossSumについて質問がございます。
Python(3.8.2)にて以下のコードで提出したところ、2つのテストケースにおいてTLEとなってしまいます。
改善点などございましたら、どなたかご教授いただけますと幸いです。
宜しくお願い致します。

該当のソースコード

# 004-Cross Sum import numpy as np H,W=map(int, input().split()) A=np.array([list(map(int, input().split())) for i in range(H)]) Acolumn=np.sum(A, axis=0) Arow=np.sum(A, axis=1) B=[] for i in range(H): b=[] for j in range(W): b.append(Arow[i]+Acolumn[j]-A[i,j]) B.append(b) for b in B: print(*b)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こちら気になったので色々調べてみたのですが、
結果としてはNumpyをインストールしていることでTLEになっているようでした。

以下調査した内容を記載します。

元にしたACコード

python

1 2H, W = map(int, input().split()) 3A = [[int(d) for d in input().split()] for _ in range(H)] 4rows = [sum(a) for a in A] 5cols = [sum(z) for z in zip(*A)] 6 7 8for y, row in enumerate(A): 9 print(' '.join(str(rows[y] + cols[x] - A[y][x]) for x, v in enumerate(row)))

このコードはSimmah_9130様と考え方はほとんど変わりませんでしたので
すこしずつSimmah_9130様のコードに置換してみました。
すると以下のように

import numpy as np

だけを記載して回答した時にTLEとなり原因が

import numpy as np

だとわかりました。

python

1import numpy as np 2 3H, W = map(int, input().split()) 4A = [[int(d) for d in input().split()] for _ in range(H)] 5rows = [sum(a) for a in A] 6cols = [sum(z) for z in zip(*A)] 7 8 9for y, row in enumerate(A): 10 print(' '.join(str(rows[y] + cols[x] - A[y][x]) for x, v in enumerate(row)))

実行時間を確認してみたのですが、
numpyをインポートするコードを残している方だけ約100msだけ長く処理をしており
ギリギリ2000msを超えてしまいTLEとなっていたようです。

numpyは便利ですが地味にこういった落とし穴があるのがわかり非常にありがたい質問でした。
ありがとうございました。

投稿2021/09/14 11:08

Tony1r0n

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Simmah_9130

2021/09/15 08:01

Tony1r0n様 早速の対応、ありがとうございました。 numpyを用いることで処理時間が短くなるかと思いましたが、 まさかそれが仇になるとは思ってもみなかったです。 代替のコードまでご提示いただき、大変参考になりました。 またご縁がございましたら、その際は宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問