You have to be at your work as soon as possible. The road on your route to work may consist of two types of surface: asphalt or sand. To simplify the description, it will be denoted by a string R consisting only of the letters: "A" for an asphalt segment and "S" for a sand segment. All segments represent the same distance. For example, R = "SAAS" describes a road comprising of sand, asphalt, asphalt and sand segments.
When you go on foot, you need 20 minutes to pass through an asphalt segment and 30 minutes through a sand segment. You also have an electric scooter, which needs 5 minutes to pass through an asphalt segment and 40 minutes through a sand segment.
You start your journey on the scooter, but at any point you can get off the scooter and go on foot for the rest of the journey. What is the shortest time in which you can get to work?
Write a function:
def solution(R)
that, given a string R of length N, representing the road to work, returns the minimum time that you need to get to work.
Examples:
1. Given R = "ASAASS", your function should return 115. You ride on the scooter over the first four segments ("ASAA") in 5 + 40 + 5 + 5 = 55 and then you go on foot through "SS" in 30 + 30 = 60. Altogether, your journey will take 55 + 60 = 115.
2. Given R = "SSA", the function should return 80. You do not ride on the scooter at all, and you go on foot in 30 + 30 + 20 = 80.
3. Given R = "SSSSAAA", the function should return 175. You ride on the scooter all the time in 40 + 40 + 40 + 40 + 5 + 5 + 5 = 175.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- string R is made only of the characters 'S' and/or 'A'.
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
def solution(N):
# 스쿠터는 중간에 버리면 더 이상 탈 수가 없다.
N = N.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in N.split()]
# 도보로만 걷는 경우를 만든다.
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20: # 아스팔트인 경우
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30: # 모래인 경우
walk[i] = 40
result.append(sum(walk))
return min(result) # 모
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
def solution(N):
# 스쿠터는 중간에 버리면 더 이상 탈 수가 없다.
N = N.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in N.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
def solution(N):
# 스쿠터
N = N.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in N.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
def solution(N):
N = N.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in N.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 6 N = N.replace("A",'20 ').replace("S",'30 ') ^ IndentationError: expected an indented block
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 6 N = N.replace("A",'20 ').replace("S",'30 ') ^ IndentationError: expected an indented block
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 6 N = N.replace("A",'20 ').replace("S",'30 ') ^ IndentationError: expected an indented block
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
def solution(N):
N = N.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in N.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
N = N.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in N.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = N.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in N.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 6 walk = [int(i) for i in R.split()] ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 6 walk = [int(i) for i in R.split()] ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 6 walk = [int(i) for i in R.split()] ^ IndentationError: unexpected indent
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
pass
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 8 for i in range(len(walk)): ^ IndentationError: unexpected indent
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 11 result.append(sum(walk)) ^ IndentationError: unindent does not match any outer indentation level
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 11 result.append(sum(walk)) ^ IndentationError: unindent does not match any outer indentation level
Traceback (most recent call last): File "exec.py", line 123, in <module> main() File "exec.py", line 64, in main sol = __import__('solution') File "/tmp/solution.py", line 11 result.append(sum(walk)) ^ IndentationError: unindent does not match any outer indentation level
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(R):
R = R.replace("A",'20 ').replace("S",'30 ')
walk = [int(i) for i in R.split()]
result = [sum(walk)]
for i in range(len(walk)):
if walk[i] == 20:
walk[i] = 5
result.append(sum(walk))
elif walk[i] == 30:
walk[i] = 40
result.append(sum(walk))
return min(result)
The following issues have been detected: timeout errors.
Medium random tests. N <= 10,000.
running time: 0.260 sec., time limit: 0.160 sec.
Medium tests, getting off the scooter at a random position. N <= 10,000.
running time: 0.432 sec., time limit: 0.176 sec.
Big tests, getting off the scooter at a random position.
Killed. Hard limit reached: 6.000 sec.
Big tests with corner cases.
Killed. Hard limit reached: 6.000 sec.