解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!
Cut and Count
https://atcoder.jp/contests/abc098/tasks/abc098_bn = int(input())
s = input()
ans = 0
for i in range(1,n):
cnt = len(set(s[:i])&set(s[i:]))
ans = max(ans, cnt)
print(ans)
まず、すべての切れる場所を全探索してset型にして重複を消す。次にどっちともにも共通する要素の数をlen(set(s[:i])&set(s[i:]))で調べ上げて、最大の数が入るようにmaxメソッドで比較し続ける
Stone Monument
https://atcoder.jp/contests/abc099/tasks/abc099_ba,b = map(int, input().split())
temp = b-a
cnt = 0
for i in range(temp+1):
cnt += i
print(cnt-b)
bの数字からaの数字を引くと1+2+3...+NのNの数字が取得できるので、N+1回for文で足し算し続ければギリギリ埋まっていない塔の高さがわかるので、それからbを引いたら答えが出てきます!
Ringo's Favorite Numbers
https://atcoder.jp/contests/abc100/tasks/abc100_bd,n = map(int, input().split())
print((100**d)*n if n != 100 else (100**d)*(n+1))
この問題コーナケースというものがあるらしく、nが100の時はうまく成り立たなくなるので、nに1を加えてから計算するらしいです。
ここで詳しい解説がされてます、c++コードですが考え方の問題なのでコードはあんまし関係ないです。
https://blog.hamayanhamayan.com/entry/2018/06/17/100130
Digit Sums
https://atcoder.jp/contests/abc101/tasks/abc101_bn = input()
s = 0
for i in range(len(n)):
s += int(n[i])
if int(n) % s == 0:
print("Yes")
else:
print("No")
sを楽に作りたいのでstr型で入力を受け取って、sをまず作ります。その後に受け取った値をint型に変換してsで割ります
Maximum Difference
https://atcoder.jp/contests/abc102/tasks/abc102_bn = int(input())
numbers = list(map(int, input().split()))
print(max(numbers) - min(numbers))
2要素の差の最大値ということはリストの中の最大の値をmaxメソッドで見つけ出して、最小の値(minで見つけ出せる)で引くだけです。
String Rotation
https://atcoder.jp/contests/abc103/tasks/abc103_bs = input()
t = input()
if s == t:
print("Yes")
exit()
for i in range(len(t)):
first = t[:i]
second = t[i:]
if (second+first) == s:
print("Yes")
exit()
print("No")
tを入れ替えてできる文字列を全探索して、一致するか判定するだけ!
AcCepted
https://atcoder.jp/contests/abc104/tasks/abc104_bs = input()
judge = True
if s[0] != "A":
print("WA")
exit()
if s[2:-1].count("C") != 1:
print("WA")
exit()
s = s.replace("A","").replace("C","")
if not s.islower():
print("WA")
exit()
print("AC")
AとCの判定をした後に、sからAとCを取り除いて、残った文字列が完全に小文字で構成されてるかを確認しています。一つでも引っ掛かったらWAが出る仕組みです
Cakes and Donuts
https://atcoder.jp/contests/abc105/tasks/abc105_bn = int(input())
for i in range(n):
for j in range(n):
if (4*i) + (7*j) == n:
print("Yes")
exit()
print("No")
単純に全探索を回すだけです。 すごい雑ですんません...
105
https://atcoder.jp/contests/abc106/tasks/abc106_bn = int(input())
ans = 0
for i in range(1,n+1,2):
cnt = 0
for j in range(1,i+1):
if i % j == 0:
cnt += 1
if cnt == 8:
ans += 1
print(ans)
1からN+1の範囲内の奇数をiにぶち込んでfor文を回して、約数の数を判定するために、1からi+1の範囲で2個目のfor文を回して、約数が8個かどうかを調べ上げる
Grid Compression
https://atcoder.jp/contests/abc107/tasks/abc107_bh,w = map(int, input().split())
a = []
b = []
c = []
for i in range(h):
s_line = list(input())
if "#" in s_line:
a.append(s_line)
for i in range(w):
temp_list = []
for j in range(len(a)):
temp_list.append(a[j][i])
if "#" in temp_list:
b.append(temp_list)
for i in range(len(a)):
supportlist = []
for j in range(len(b)):
supportlist.append(b[j][i])
c.append(supportlist)
for c_line in c:
print(''.join(c_line))
ACしてる人の出力見てしもうたよ、むずかったわ...解釈としてはまず横一列すべて"."の要素をすべて取り除く。 そして次に親forをwで回すことによって縦一列すべて"."の要素を取り除く。最後に入力と同じような形に戻すためにもう一度for文を回す。supportlist.append(b[j][i])でjが先になっているのはbでは縦列が基本になっているから。
Ruined Square
https://atcoder.jp/contests/abc108/tasks/abc108_bx1,y1,x2,y2 = map(int, input().split())
xlength = x2 - x1
ylength = y2 - y1
x3 = x2 - ylength
y3 = y2 + xlength
x4 = x1 - ylength
y4 = y1 + xlength
print(x3, y3, x4, y4)
この問題は一回図を書いてみると凄い簡単に理解できて、何をやればいいかが分かります!
Shiritori
https://atcoder.jp/contests/abc109/tasks/abc109_bn = int(input())
words = [input() for _ in range(n)]
for i in range(1,n):
if words.count(words[i]) >= 2:
print("No")
exit()
else:
if words[i][0] != words[i-1][-1]:
print("No")
exit()
print("Yes")
一度すべての単語をリストに格納してから、確認していきました、for文が1からnなのは最初の単語がひっかることは絶対にないのと、elseに行ったあとの処理でエラーが出てしまうからです。
1 Dimensional World's Tale
https://atcoder.jp/contests/abc110/tasks/abc110_bn,m,x,y = map(int, input().split())
xlist = list(map(int, input().split()))
ylist = list(map(int, input().split()))
for i in range(x+1,y+1):
judge = True
for xnum in xlist:
if i <= xnum:
judge = False
break
for ynum in ylist:
if i > ynum:
judge = False
break
if judge:
print("No War")
exit()
print("War")
考えられるzの値を全探索します、すべてのif文センサーを通り抜けられたzが存在するときに"No War"を表示してプログラムをexitメソッドで終了します、もしzの値がなんであってもwarになってしまう場合は"war"を表示します