塩見周子の徒然日記

自分のことを塩見周子と思い込んでいるオタクです

2/12 AtCoder(入力の受け取り方、insert、set、count)/ss

AtCoder
解くに至ったもの(10問)
ABC:072C

ARC:019A/021A/022A/023A/024A/026A

みんプロ:B

全国統一なんちゃら:A,B

 

ABC072C

atcoder.jp

方針自体はすぐ決まったけどそれをちゃんとACさせるまで一時間 ヒェ

マズかったポイントは三つくらいあって、

①最初数字に0が入らないもんだと決めつけていた

②10^5のリストを作ろうとしてたけど①の勘違いにより実際は一つ足りなかった

③上二つに気づいたがリストMをつくるところでLに0を入れてwhile文を止めようとしていたため、Lが全部0の場合カウントされないことが起こっていた(このため2WAを食らう)

 ☆(リスト名).insert(n,a)

リストのn番目の文字の前にaを追加 だからリストの先頭に入れたいときはnを0にすればよい

 

ARC021A

与えられた数の集まりから行列みたいなのをつくるやつ

以前(2/10)学習したのはリスト内包表記だった 二日で忘れたのでもう一回書く 最悪

 

①リスト内包表記は、

L.append([int(i) for i in input().split()])

だった

②リスト内包表記を使わないと、

L = []

for i in range(行数):

  L.append(list(map(int(input().split()))

でイケる(要は各行で受け取った入力を並べてく、これ自体は前者と同じだけどこっちの方が直感的そう。ただリスト内包の方が実行時間早い?これはわかんない)

 

具体的には

2 3 3

4 1 0

2 4 5

みたいな入力に対し、

L = [[2,3,3],[4,1,0],[2,4,5]]

となる

数字じゃ無くても、L.append(input().split())とすれば文字のリストを得ることができる

 

ARC026A

リストで、重複する要素をまとめたいときは

set(リスト名)

とすればよい

しかし、これはリストと同じように「何番目の要素」という操作ができないので、

L = list(set(リスト名))

としてリストにする使い方をするのが便利そう

 

あと、リスト内の要素の数え方は

(リスト名).count(数えたいもの)

 

 

 

ss

えっちなのを3000字追加した