回答編集履歴

1

修正

2022/06/21 08:18

投稿

8524ba23
8524ba23

スコア38352

test CHANGED
@@ -1,5 +1,24 @@
1
1
  たとえば1122など2連続でもYesと誤答します。
2
2
  提示コードでの判定の仕組みがよく理解できていませんが
3
3
  同じ数が連続する回数を数えるのはややコードが煩雑になりそうなので
4
- 各桁の出現頻度を`0``9`までの10個の配列に記録して、最後に最高の頻度が3かを判定したほうが簡便かと思います。
4
+ ~~各桁の出現頻度を0~9までの10個の配列に記録して、最後に最高の頻度が3かを判定したほうが簡便かと思います。~~
5
+ 単に出現頻度を求めても意味ないですね。
5
6
 
7
+ 連続回数を数え上げる方法でもコードはシンプルに書けそうです。
8
+ 以下C++でもほぼ同じく書けます。
9
+ ```Python
10
+ def is_good(n):
11
+ cnt, pre = 0, -1
12
+ while n:
13
+ if cnt >= 3:
14
+ return True
15
+ cur = n % 10
16
+ cnt = cnt+1 if pre == cur else 1 # 連続していたら+1、途切れたら1
17
+ pre = cur
18
+ n //= 10
19
+ return cnt >= 3
20
+
21
+ for n in range(1111,10000):
22
+ print( n, is_good(n))
23
+ ```
24
+