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 |