回答編集履歴
1
修正
test
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
たとえば1122など2連続でもYesと誤答します。
|
2
2
|
提示コードでの判定の仕組みがよく理解できていませんが
|
3
3
|
同じ数が連続する回数を数えるのはややコードが煩雑になりそうなので
|
4
|
-
各桁の出現頻度を
|
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
|
+
|