본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Counting Valleys

Counting Valleys | HackerRank

 

Counting Valleys | HackerRank

Count the valleys encountered during vacation.

www.hackerrank.com

 

<문제>

input: 첫번째 줄에는 총 hike하는 개수를 입력받고, 두번째 줄에는 hike 과정을 개수만큼 입력받는다. U는 위로 올라가고, D는 아래로 내려간다. 

output: hike하는 과정 중 valley의 개수를 리턴한다.

 

 

<코드>

int countingValleys(int steps, char* path) {
    int valley=0, arr[steps], height=0;
    
    for(int i=0; i<steps; i++){
        if (path[i]=='U') height++;
        else height--;
        arr[i]=height;
        if (i==0) continue;
        if (arr[i]==0 && arr[i-1]!=1) valley++;
    }
    
    return valley;
}

 

<풀이>

sea level에서부터 D하다가 U를 통해 sea level까지 올라온 것을 하나의 valley라고 한다. 그러므로 각 step에서 hiker의 높이를 알아야하기 때문에 변수로 height를 선언하고, valley의 개수를 세는 valley 변수, 각 높이를 저장하는 배열 arr[]을 선언했다. arr[i]에 매개변수로 전달받은 path를 따라 height를 저장하고, 만약 arr[i]의 값이 0이고 그 이전 값이 음수면 valley가 하나 존재하는 것이므로 valley++을 하였다. valley 값을 리턴하여 문제를 풀 수 있었다.

 

 

<실행결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글

[HackerRank] Search- Missing Numbers  (0) 2021.09.11
[HackerRank] Jumping on the Clouds: Revisited  (0) 2021.09.11
[HackerRank] Get Node Value  (0) 2021.08.28
[HackerRank] Cycle Detection  (0) 2021.08.21
[HackerRank] Plus Minus  (0) 2021.08.21