Problem
Need two integers: one for keeping track of the number of valleys, and another for tracking current position.
Let the hiker start at position 0.
"U" represents +1, "D" represents -1.
Since we only care about the number of valleys completed and not mountains, we want to know when the hiker climbs out of a valley... which would be the moment position -1 becomes 0.
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
class Result {
/*
* Complete the 'countingValleys' function below.
*
* The function is expected to return an INTEGER.
* The function accepts following parameters:
* 1. INTEGER steps
* 2. STRING path
*/
public static int countingValleys(int steps, String path) {
int valley = 0;
int currPos = 0;
String ar[] = path.split("");
for(String s:ar) {
if(s.equals("U")) {
currPos++;
if(currPos == 0)
valley++;
}
else
currPos--;
}
return valley;
}
}
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
int steps = Integer.parseInt(bufferedReader.readLine().trim());
String path = bufferedReader.readLine();
int result = Result.countingValleys(steps, path);
bufferedWriter.write(String.valueOf(result));
bufferedWriter.newLine();
bufferedReader.close();
bufferedWriter.close();
}
}
'CODE > Algorithms & Data Structures' 카테고리의 다른 글
[LeetCode] Minimum Deletions to Make Character Frequencies Unique (0) | 2021.10.03 |
---|---|
[LeetCode] String to Integer (atoi) (0) | 2021.10.02 |
[LeetCode] Spiral Matrix (0) | 2021.10.02 |
[LeetCode] Two Sum (0) | 2021.10.01 |
[HackerRank] Jumping on the Clouds _Java8 (1) | 2021.08.06 |