1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ABC_344

Last updated at Posted at 2024-03-09

A問題

findで2番目のインデックスを調べる方法調べてたら少し時間かかった。

#Sは文字列、開始インデックスを1回目に見つけたインデックスにすれば2回目のインデックスを返す
S.find("検索文字",開始インデックス+1)

B問題

不特定回数繰り返す⇒無限ループ、特定の条件でbreak
知らなかったので調べるのに時間かかった。

numbers = []

while True:
    A = int(input())
    numbers.append(A)
    if A == 0:
        break
    

numbers.reverse()

for A in numbers:
    print(A)

C問題

なにも考えずに4重ループさせたらTLE
A+Bの結果には重複があるので、あらかじめA+Bの結果を集合で用意しておくことで計算量を削る。

N = int(input())
A = list(map(int, input().split()))
M = int(input())
B = list(map(int, input().split()))
L = int(input())
C = list(map(int, input().split()))
Q = int(input())
X = list(map(int, input().split()))

AB_sums = set(j + u for j in A for u in B)

for x in X:
    found = False
    for k in C:
        if x - k in AB_sums:
            print("Yes")
            found = True
            break  
    if not found:
        print("No")

D問題

全探索したら絶対TLEするので、工夫が必要そうだなーと。
多分幅優先探索使えば解ける。ただ練習不足でコード書けなかった。

E問題

愚直に解いたけど、TLE。
これは全く方針分からなかったから解説読んで考えます。

N = int(input())
A = list(map(int,input().split()))
Q = int(input())

for _ in range(Q):
    q = list(map(int,input().split()))
    q_type = q[0]
    x = q[1]
    if q_type == 1:
        y = q[2]
        x_index = A.index(x)
        A.insert(x_index + 1,y)
    elif q_type == 2:
        A.remove(x)

print(' '.join(map(str, A)))

まとめ

頻出のアルゴリズム覚えてたらD問題は解けてたかもだけど、
3月中はA~C問題を解くスピードに焦点当てて勉強します。

1
1
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?