HackerRank/Algorithms

[HackerRank] Implementation > Counting Valleys

ruming 2021. 11. 7. 19:47

https://www.hackerrank.com/challenges/counting-valleys/problem

계곡이 몇 개인지 세는 문제다. U과 D로 입력을 받고 원래 높이보다 낮았다가 다시 올라오면 계곡 하나로 카운트한다.

 

int countingValleys(int steps, char* path) {
    int flag = 0, answer = 0;
    for(int i=0; i<steps; i++){
        if(path[i] == 'U'){
            flag++;
            if(flag == 0)   answer++;
        }  
        else {
            flag--;
        }
    }
    return answer;
}

일단 flag 변수를 만들어 U일 때는 +1, D일 때는 -1이 되게 코드를 짰다.

여기서 계곡이 생기려면 기준점(0)에서 -였다가 다시 0으로 올라와야 한다.

따라서 U일 때 flag가 0이라면, -에서 올라온 것이므로 계곡이 하나가 생성된다. 따라서 계곡을 세는 answer변수에 +1시킨다.