回答編集履歴
2
修正取り下げ
test
CHANGED
@@ -64,7 +64,7 @@
|
|
64
64
|
|
65
65
|
もう少しだけ高速化してみましたが、ここまでやらなくてはいけない時点で何かおかしい気はします。
|
66
66
|
|
67
|
-
- リストを事前確保して`append`をやめる
|
67
|
+
- ~~リストを事前確保して`append`をやめる~~ (プロファイラを外したらほとんど効果がなかったので取り下げます)
|
68
68
|
|
69
69
|
- `if length == k:`の判定を、`length`が増えた時だけにする
|
70
70
|
|
@@ -78,7 +78,7 @@
|
|
78
78
|
|
79
79
|
length = 0
|
80
80
|
|
81
|
-
li = [
|
81
|
+
li = []
|
82
82
|
|
83
83
|
for i in range(97, 97 + 26):
|
84
84
|
|
@@ -88,7 +88,7 @@
|
|
88
88
|
|
89
89
|
if s[j] == c:
|
90
90
|
|
91
|
-
li
|
91
|
+
li.append(j)
|
92
92
|
|
93
93
|
length += 1
|
94
94
|
|
1
修正ソース提示
test
CHANGED
@@ -53,3 +53,71 @@
|
|
53
53
|
|
54
54
|
|
55
55
|
これを見れば、`chr`があやしいと分かるでしょう。
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
# 追記
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
こちらの環境だと、`chr`の修正だけで1秒強にまで縮んだのですが、不十分でしたか。
|
64
|
+
|
65
|
+
もう少しだけ高速化してみましたが、ここまでやらなくてはいけない時点で何かおかしい気はします。
|
66
|
+
|
67
|
+
- リストを事前確保して`append`をやめる
|
68
|
+
|
69
|
+
- `if length == k:`の判定を、`length`が増えた時だけにする
|
70
|
+
|
71
|
+
```python
|
72
|
+
|
73
|
+
n, k = map(int, input().split())
|
74
|
+
|
75
|
+
s = list(str(input()))
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
length = 0
|
80
|
+
|
81
|
+
li = [0] * k
|
82
|
+
|
83
|
+
for i in range(97, 97 + 26):
|
84
|
+
|
85
|
+
c = chr(i)
|
86
|
+
|
87
|
+
for j in range(n):
|
88
|
+
|
89
|
+
if s[j] == c:
|
90
|
+
|
91
|
+
li[length] = j
|
92
|
+
|
93
|
+
length += 1
|
94
|
+
|
95
|
+
if length == k:
|
96
|
+
|
97
|
+
break
|
98
|
+
|
99
|
+
else:
|
100
|
+
|
101
|
+
continue
|
102
|
+
|
103
|
+
break
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
li = set(li)
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
ans = ''
|
112
|
+
|
113
|
+
for i in range(n):
|
114
|
+
|
115
|
+
if i not in li:
|
116
|
+
|
117
|
+
ans += s[i]
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
print(ans)
|
122
|
+
|
123
|
+
```
|