Pythonで理解する蟻本「2-2 Best Cow Line(POJ 3617)」(p.45)
この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の
「2-2 Best Cow Line(POJ 3617)」(p.45)
のコードをPythonで書き直したものとなっています。
入力
入力例
蟻本ではputcharで一文字ずつ出力していますが、Pythonで出力するための標準関数であるprintは出力の際に自動的に改行が挟まれてしまいます。 そのため、下のコードでは文字列Tに文字を追加していき、最後に文字列Tを出力しています。
6
ACDBCB
解答
# 入力
N = int(input())
S = input()
# S[a], S[a+1], ..., S[b]が残っている文字列
a = 0
b = N - 1
T = '' # 文字列T
while a <= b:
# 左からみた場合と右から見た場合を比較
left = False
for i in range(b - a + 1): # 0 <= i <= b - a
if S[a + i] < S[b - i]:
left = True
break
elif S[a + i] > S[b - i]:
left = False
break
# 文字列Tに文字を追加する
if left:
T += S[a]
a += 1
else:
T += S[b]
b -= 1
print(T)