[BOJ/Python]配分19941号ハンバーガー
この問題は,入力された文字列を巡回し,HとPがK距離内にあるときに,食べられたハンバーガーとハンバーガーを食べた人のインデックスを調べるchk配列のうち,最後にchk配列とs文字列を同時に巡回し,chkがTrue,sがPのときにcntを増やす方法で解決する. n,kと入力します. 文字列sを入力します. s.k個追加します.これは、sを巡回する際にインデックスエラーの発生を除去するためである.たとえば、s[n−3]のkが5の場合、sの最後のs[n−1]からs[n+2]を巡回する必要があるため、インデックスエラーが発生する.それを阻止するために意味のない文字.k個追加します. で食べたハンバーガーと、食べた人をチェックするために並んだchkはfalsen個で構成されています. ハンバーガーを食べた人数を計算するために、変数cntを0と定義します. sの長さのiを繰り返すfor文.
->s[i]がHで、chk[i]がFalseである場合.
-->i+1からi+kまで繰り返されるjのfor文.
----->s[j]がPで、chk[j]がFalseである場合.
------>chk[j]、chk[j]をtrueに更新します.
------>cnt 1を増やし、重複ドアから離脱します.
->s[i]がPで、chk[i]がFalseである場合.
-->i+1からi+kまで繰り返されるjのfor文.
----->s[j]がHで、chk[j]がFalseである場合.
------>chk[j]、chk[i]をtrueに更新します.
------>cnt 1を増やし、重複ドアから離脱します. 出力 cnt. Code
->s[i]がHで、chk[i]がFalseである場合.
-->i+1からi+kまで繰り返されるjのfor文.
----->s[j]がPで、chk[j]がFalseである場合.
------>chk[j]、chk[j]をtrueに更新します.
------>cnt 1を増やし、重複ドアから離脱します.
->s[i]がPで、chk[i]がFalseである場合.
-->i+1からi+kまで繰り返されるjのfor文.
----->s[j]がHで、chk[j]がFalseである場合.
------>chk[j]、chk[i]をtrueに更新します.
------>cnt 1を増やし、重複ドアから離脱します.
Code n, k=map(int, input().split())
s=str(input())
s+='.'*k
chk=[False]*n
cnt=0
for i in range(len(s)):
if s[i]=='H' and chk[i]==False:
for j in range(i+1, i+k+1):
if s[j]=='P' and chk[j]==False:
chk[j]=True
chk[i]=True
cnt+=1
break
if s[i]=='P' and chk[i]==False:
for j in range(i+1, i+k+1):
if s[j]=='H' and chk[j]==False:
chk[j]=True
chk[i]=True
cnt+=1
break
print(cnt)
Reference
この問題について([BOJ/Python]配分19941号ハンバーガー), 我々は、より多くの情報をここで見つけました
https://velog.io/@xx0hn/BOJ-Python-19941번-햄버거-분배
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
n, k=map(int, input().split())
s=str(input())
s+='.'*k
chk=[False]*n
cnt=0
for i in range(len(s)):
if s[i]=='H' and chk[i]==False:
for j in range(i+1, i+k+1):
if s[j]=='P' and chk[j]==False:
chk[j]=True
chk[i]=True
cnt+=1
break
if s[i]=='P' and chk[i]==False:
for j in range(i+1, i+k+1):
if s[j]=='H' and chk[j]==False:
chk[j]=True
chk[i]=True
cnt+=1
break
print(cnt)
Reference
この問題について([BOJ/Python]配分19941号ハンバーガー), 我々は、より多くの情報をここで見つけました https://velog.io/@xx0hn/BOJ-Python-19941번-햄버거-분배テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol