この記事は2022年12月17日に行われたHHKBプログラミングコンテスト2022Winter(AtCoder Beginner Contest 282)のA,B,C問題の解法を自分なりに解説してみた記事になる。
コンテスト:HHKBプログラミングコンテスト2022Winter(AtCoder Beginner Contest 282)
A問題:Generalized ABC
- 問題文
整数 K が与えられます。
英大文字を A から昇順に K 個繋げて得られる文字列を答えてください。
K = int(input())
ans = ''
# chr関数は65~90をA~Zに変換する
for x in range(65,65+K):
#文字列連結
ans += chr(x)
print(ans)
Chr関数についてはこちら
https://www.tipsfound.com/vba/05chr
B問題:Let's Get a Perfect Score
- 問題文(簡略に)
N人それぞれがM問に対して解くことのできる問題をo、解くことのできない問題をxとしており、N人の中の2人お互いが片方でもoであれば全問正解することができ、全問正解ができるようなペアの組み合わせはいくつあるのかを数える。
N, M = map(int, input().split()) #N人M問
ox = [] #N人それぞれが問題に対してoなのかxなのかを入力する箇所
ok = 0 #全問正解できるかどうか
for s in range(N): #N人分
S = input()
ox.append(S)
if s >= 1: #2人目の入力から比較対象になる
for x in range(1,len(ox)):
ans = 0 #何問正解できるか
for f in range(M):
#仮に自身と比較対象の結果が両方xな場合
if S[f] == 'x' and ox[x-1][f] == 'x':
pass
#その他の場合
else:
ans += 1
#自身と比較対象が全問正解できる場合
if ans == M:
ok += 1
print(ok)
C問題:String Delimiter
- 問題文(簡略に)
"の個数を2K個とすると、各i=1,2,…,K について 2i−1 番目の " から 2i 番目の " までの文字のことを括られた文字と呼び、括られていない文字の中に , があれば、それを . に置き換える。
N = input()
S = input()
A = ''
judge = 0 # ""の個数(0であれば括られていない。1であれば括られている。)
for x in S:
#文字が " の場合
if x == '"':
#まだ括られていない場合
if judge == 0:
judge = 1
A += x
#括られている場合
else:
judge = 0
A += x
#文字が " と , ではない場合
elif x != '"' and x != ',':
A += x
#文字が , の場合
elif x != '"' and x == ',':
#括られていなければ . に変更
if judge == 0:
A += '.'
#括られていればそのまま追加
else:
A += x
print(A)