リアルタイムに解けた問題
A - Election2
問題文
AtCoder市では市長選挙が行われています。候補者は高橋氏と青木氏です。
2人のどちらかに投じられた有効票は$N$票あり、現在開票が行われています。なお、$N$は奇数です。
現在の開票作業の途中経過は高橋氏に$T$票、青木氏に$A$票です。
現時点で勝敗が確定しているかを判定してください、
制約
- $1 \leq N \leq 99$
- $N$は奇数
- $0 \leq T,A \leq N$
- $T+A \leq N$
- 入力はすべて整数
アルゴリズム
$T$または$A$が全投票数の半数以上か判断。
ソースコード
N, T, A = map(int, input().split())
if T > N/2 or A > N/2:
print('Yes')
else:
print('No')
B - Vertical Writing
問題文
横書きの文章が与えられます。縦書きに出力してください。空白を
*
で埋めてください。
$N$個の、英小文字からなる文字列$S_{1}, S_{2},...,S_{N}$が与えられます。これらの文字列の長さの最大値を$M$とします。
以下の条件を満たす$M$個の文字列$T_{1}, T_{2},...,T_{M}$を出力してください。
-
各$T_{i}$は英小文字および
*
からなる -
各$T_{i}$の末尾は
*
でない -
各$1 \leq i \leq N$について、次が成り立つ。
-
各$1 \leq j \leq |S_{i}|$について、$T_{j}$の$N - i + 1$文字目が存在し、$T_{1}, T_{2},...,T_{|S_{i}|}$それぞれの$N - i + 1$文字目をこの順に連結したものは$S_{i}$と一致する。
-
各$|S_{i}|+1 \leq j \leq M$について、$T_{j}$の$N - i + 1$文字目は存在しないか、
*
である。
-
ただし、$|S_{i}|$で文字列S_{i}の長さを表します。
制約
- $N$は1以上100以下の整数
- $S_{i}$は長さ1以上100以下の英小文字からなる文字列
アルゴリズム
各文字列のうち、最大の長さを求めて、その数値でfor文を動かす。
各文字列の先頭の要素を$S_{N}$から順に取り出しつなげる。要素がなければ、*
をつなげる。出力の際は条件を満たすように出力する。
ソースコード
N = int(input())
S = [list(input()) for _ in range(N)]
S_output = []
max_len = -1
for s in S:
if len(s) > max_len:
max_len = len(s)
for i in range(max_len):
info = ''
for j in range(N):
if len(S[N-1-j]) != 0:
chr = S[N-1-j].pop(0)
else:
chr = '*'
info += chr
S_output.append(info)
for s in S_output:
if '*' not in s:
print(s)
else:
if s[-1] != '*':
print(s)
else:
while True:
if s[-1] == '*':
s = s[:-1]
else:
print(s)
break