📝 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:

  • 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.
  • 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çãoAltitude
-0
D-1
U0

Já quando subimos e descemos, temos uma montanha. Logo o padrão seria:

OperaçãoAltitude
-0
U1
D0

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.