📝 Descrição
An avid hiker keeps meticulous records of their hikes. During the last hike that took exactly , for every step it was noted if it was an uphill, , or a downhill, step. Hikes always start and end at sea level, and each step up or down represents a unit change in altitude. We define the following terms:
- A mountain is a sequence of consecutive steps above sea level, starting with a step up from sea level and ending with a step down to sea level.
- A valley is a sequence of consecutive steps below sea level, starting with a step down from sea level and ending with a step up to sea level.
Given the sequence of up and down steps during a hike, find and print the number of valleys walked through.
📌 Exemplos
Exemplo 1
✅ Casos de teste
Caso 1
Entrada
Saída
🚀 Como resolvi?
Apesar de ser “fácil”, eu consegui complicar a solução. Até perceber que o detalhe para resolver o problema era apenas contar e seguir a regra definida no enunciado.
Por exemplo, quando descemos e subimos, temos um vale. Logo o padrão seria:
Operação | Altitude |
---|---|
- | 0 |
D | -1 |
U | 0 |
Já quando subimos e descemos, temos uma montanha. Logo o padrão seria:
Operação | Altitude |
---|---|
- | 0 |
U | 1 |
D | 0 |
Note que ambos voltaram ao nível do mar. Então, para contarmos se passamos por um vale temos de:
- Verificar se a altitude atual é 0
- Verificar se a operação atual é “U”
Garantindo essas duas condições, basta percorrer cada letra do caminho e ir realizando ou a adição ou a subtração do valor correspondente.
🛠️ Implementação
def countingValleys(steps, path):
altitude = 0
valley = 0
for letter in path:
if letter == "U":
altitude += 1
if altitude == 0:
valley +=1
else:
altitude -= 1
return valley
🧠 O que aprendemos?
Que gastar um tempo entendendo o enunciado do problema acaba facilitando a resolução dele.