はじめに
ABC326で灰色13級になりました。あおぷと.zipです。
今回参加したABC327の解説を書いていきます。
ちなみにABC327で灰色12級になりました。
A - ab
解説
Sを文字列として受け取りS[i]がaでS[i+1]がb,または
S[i]がbでS[i+1]がaならanswerを"Yes"にする。
コード
a.py
input()
s = input()
answer = "No"
for i in range(len(s)-1):
if s[i] == 'a':
if s[i+1] == 'b':
answer = "Yes"
elif s[i] == 'b':
if s[i+1] == 'a':
answer = "Yes"
print(answer)
pythonだとNを受け取らなくてもだいじょぶ。
range(len(s)-1)
のところの-1を付け忘れるとWAになる。
追記:2023/12/30
コメントもらってたのに改善してなかった。
すいません。
improvement.py
input()
s = input()
print('Yes' if 'ab' in s or 'ba' in s else 'No')
B - A^A
解説
16**16 > 10**18
なのでパターンは1~15の15通り。
全捜索で一致するパターンがあったらその数字を出力。
なかったら-1を出力。
コード
b.py
b = int(input())
answer = -1
for i in range(1,16):
if i**i == b:
answer = i
print(answer)
C - Number Place
解説
まずAを2次元配列として受け取る。
縦を値が重複しないsetにして数が9未満だったらanswerを0にする。
これを9回する。(横も)
そして3x3ブロックごとにsetにし、縦と同じようにする。
コード
c.py
Array = [list(map(int, input().split())) for i in range(9)]
vertical = []
beside = []
block = []
answer = 1
for i in range(9):
for j in range(9):
vertical.append(Array[i][j])
beside.append(Array[j][i])
if len(set(vertical)) < 9 or len(set(beside)) < 9:
answer = 0
vertical.clear()
beside.clear()
for x in range(3):
for y in range(3):
for i in range(3):
for j in range(3):
block.append(Array[x*3+j][y*3+i])
if len(set(block)) < 9:
answer = 0
block.clear()
if answer:
print("Yes")
else:
print("No")
4重ループにならないような方法コメントに書き込んでくださいお願いします。
終わりに
初めてC問題ACしましたけど4重ループになってます。
今後改善したいです。