[BOJ]2810号:カップフレーム


✔️ 質問する
10年ぶりに山河が変わる.
江山のある団地にやっと劇場ができて、江山は劇場に遊びに行きました.売店でコーラを買った後、席に座っていた江山は混乱に陥った.両側のコップポットはすでに隣の人に占領されているので、コーラを挿すことができるコップポットはありません.映画を見ているうちにコーラを手にした江山が再び劇場に来た時、コーラを必ずカップ棚に置いて帰ると決心した.
劇場の一列にはN席がある.隣の席の間にはコップ棚があり、両端の席にはコップ棚があります.また、この劇場にはカップル席もあります.カップル席の間にはカップマットがありません.
劇場のメッセージが与えられた.このとき、人々がこの列に座っているときは、コップをカップフレームに挿入できる最大人数を求めるプログラムを作成してください.誰もがコップを作っていて、自分の席の両側のコップ棚にコップを差し込むしかありません.
Sは普通席、Lはカップル席、Lはいつもペアで2つあげます.
座席のレイアウトがSLLLSSLLの場合、以下に示すように、カップハンドルを*としてマークします.*S*LL*LL*S*S*LL*上記の例では、少なくとも2人はカップマットを使用できない.
[入力]
1列目にはN席あります.(1≦N≦50)2行目は座席情報を提供する.
[出力]
出力はカップをカップ棚に置くことができる最大人数です.
😎 ソースコード
N = int(input())
seat = input()

answer = 0
couple = 0

for ppl in seat:
	# L의 개수 확인
	if ppl == 'L':
		couple += 1

# L 자리만 컵홀더 하나 빼주면 된다
answer = N+1-int(couple/2)
if answer > N:
	# 컵홀더 사용 자리보다 사람이 적음
	answer = N
print(answer)
問題が終わったら
問題を左右の変数で解くといいです.しかし少し考えてみると、すべての席の両側にカップマットが使われていて、カップル席だけが真ん中を空けることができます.そこで,すべての位置にカップ穴が配置されていると仮定し,Lの個数を算出し,半分の方向で考える.
でも思いもよらなかった部分は…!!カップフレームの利用可能数は人より多い.これは例外処理コードで記述されています.