fc2ブログ

長テーブルのUNAGIYA問題

2020.11.23 22:41|プログラム
解けた、2時間かかった、超がんばった
コードは追記で折りたたんでおく

■悩んだところ
・長テーブルの処理、座席数を超えたら1席目に戻ってくる処理
・席がばってぃんぐした時の退店処理
・退店処理後人数が残っていた場合回りすぎてしまう問題


■解決方法
・長いテーブル処理
->座席数超えた時、越えなかったときでif処理を分けた、それだけでいけたはず

・退店処理
->1人の時の退店処理がうまくいかなかったから、1人の時はbreak処理を入れた。
->複数人の時はrange(1,人数)でぶん回して現在の座席ポジションからさかのぼって座席を空席にした

・回りすぎ問題
->退店処理が発生した時のカウンターを設置した、退店処理カウンターが1以上の時そもそもif文に入らないようにした
break置いたからこのカウンターいらなくない?
いらなかったわ
処理入った後そもそもfor文をぶっ飛ばすようにbreak入れてたはずだから当然いらないですね

■感想
こんなんぜってーとけねーわって思ってた3ヵ月前の僕!解けましたよ!!!
解けるのはよろしいのですが、時間がかかりすぎたのと100点とるまでに10回ぐらい提出して直してを繰り返しました。

■今後の課題
・手を動かしてパターン慣れする事
->時間かかりすぎなのでパターンを覚えましょう
・提出する前のテストをちゃんと考えましょう
->正直なところ今は手を抜いてる、間違えたなら直せばいいやって感じでセルフチェック飛ばしてるので直した方がいいかも
今回は、組んでる途中で間違えてるのここだろうなっていう予想が立ってたからなんとかなった
・コードが汚い
->まだ解ければいいで大丈夫な気がする、そもそもコードレビューをしたこともしてもらったこともないので
入社時にOJTで教えていただいてからきれいなコードというのを覚えた方が理想的なんじゃないんですかね
 自分が見直したいからコメントは残すことにする
num = input().split()
seet = int(num[0])
groupe = int(num[1])
sheet_set = [0] * seet

for i in range(groupe):
#来店人数、座席を分ける
count = 0
break_count = 0
hito = input().split()
ninzuu = int(hito[0])
seki_start = int(hito[1]) - 1
#座席に案内する
for j in range(ninzuu):
if seki_start+j >= seet:
sheet_set[seki_start+j-seet] += 1
count += 1
if sheet_set[seki_start+j-seet] > 1 and break_count == 0:
sheet_set[seki_start+j-seet] = 1
break_count += 1
if count == 1:
break
else:
for l in range(1,count):
if seki_start+j-seet-l < 0:
sheet_set[seet-l] = 0
else:
sheet_set[seki_start+j-l] = 0
break
else:
sheet_set[seki_start+j] += 1
count += 1
#一人一人座らせたときの席が2になった場合、退店処理をいれる
if sheet_set[seki_start+j] > 1 and break_count == 0: #回りすぎを処置
sheet_set[seki_start+j] = 1
break_count += 1 #回りすぎカウンター
if count == 1: #一人来客の時は考えない為break
break
else:
for k in range(1,count):
sheet_set[seki_start+j-k] = 0
break



answer = sheet_set.count(1)
print(answer)
#print(sheet_set)

Comment

非公開コメント

| 2022.10 |
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
何なのか未定

プロフィール

がぁちゅ/終葉

Author:がぁちゅ/終葉
MapleStory:罪焔がぁちゃ
LaTale:終葉(ついのは)
Mabinogi:終葉(しゅうは)
PaperMan:うにぅぃ
FEZ:終葉(おりば)
MabinogiHeros:森のごりらさん
-↑引退済み 現役↓-
FFⅩⅣ:Oriva Hawaian
Dota2:oriva

リンク

ツイッター

FC2カウンター

最近の記事

カテゴリー

最近のコメント

過去ログ

ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示

【向日葵の教会と長い夏休み】応援中!
ページトップへ