반응형
Hackkerank의 Interview prepare ket 중 Warm-up Challenges의 CountingValleys 문제 풀이 Java 코드
[정의]
- 스텝은 해수면을 기준으로 시작
- 모든 걸음은 U, D로 기록됨 (U은 언덕을 올라갈 때, D는 내려갈 때)
- 산의 정의: 해수면을 기준으로 위로 올라가고 다시 아래로 내려왔을 경우, 한 개의 산으로 판단.
- 계곡의 정의: 해수면을 기준으로 아래로 내려가고 다시 위로 올라왔을 경우, 한 개의 계곡으로 판단.
[문제]
- 주어진 걸음 배열을 바탕으로, 지나간 계곡의 수를 구하여라.
[전략]
- 해수면을 기준으로 아래로 내려갔다가 올라온 경우만 카운팅
- Y 좌표계로 생각해서, 해수면(=기준점)을 좌표 0으로 정의
- U 일 땐 현재 좌표에서 +1 , D 일 땐 현재 좌표에서 -1 한 좌표를 변경
- 다음 스텝이 U이고, 변경 전 좌표가 -1 인 경우 한 개의 계곡을 건넌 것으로 간주
public class CountingValleys {
static int countingValleys(int n, String s) {
int cnt = 0;
int sum = 0;
for(int i =0; i < n; i++){
char step = s.charAt(i);
if(step == 'U'){
if(sum == - 1){
sum++;
cnt++;
}else{
sum++;
}
}else{
sum --;
}
}
return cnt;
}
public static void main(String[] args) {
int n = 8;
String steps = "UDDDUDUU";
int answer = 1;
int result = countingValleys(n, steps);
System.out.printf("\nmy answer: %d , real answer: %d , result :: test %s%n", result, answer, result == answer);
}
}
반응형
'Programming > Algorithm' 카테고리의 다른 글
[30 Days of Code] 0: Hello, World (0) | 2020.10.30 |
---|---|
[Mysql] 프로그래머스 - GROUP BY입양 시각 구하기(2) (0) | 2020.10.19 |
[Hackerrank] JumpingOnClouds - java (0) | 2020.09.08 |
[Java-알고리즘] Frog Jumps (0) | 2020.05.20 |
[Java-알고리즘] 카카오 블라인드 코딩 테스트 - 비밀 지도 (2) | 2020.01.23 |