Algorithm/기타(기업등)
[CodingBat/java] gHappy
IagreeBUT
2021. 10. 11. 20:15
728x90
구분
- String - 3
문제
g가 등장 했을 때, 2개이상 연속으로 등장할 때는 true, 아니면 false
https://codingbat.com/prob/p198664
풀이
두가지 boolean변수를 이용한다.
- flag : 직전에 g가 등장했는가
- gState : 답
- g가 등장한 경우 2개 이상 연속으로 등장했는가
- g가 등장하지 않은 경우는 true
뻘짓
※순서 주의
16행 flag= true를 위의 if문이 실행된 이후에 변경해야함
코드
public boolean gHappy(String str) {
boolean gState= true;//g가 0개 등장할 때도 true이므로
boolean flag = false;//이전이 g인가
for(int i=0; i<str.length();i++){
if( str.charAt(i) =='g'){ //이번 char가 g이면
gState = false;//gState : false (1개만 등장시 false)
if(flag){//직전에 g가 등장했으면
gState=true;//true
}
flag = true;//직전에 g가 등장했음
}
else{//이번 char이 g가 아니면
flag = false;//직전에 g가 등장하지 않았음
}
}
return gState;
}
다른 풀이
public boolean gHappy(String str) {
int len = str.length();
boolean happy = true;
for (int i = 0; i < len; i++) {
if (str.charAt(i) == 'g') {
if (i > 0 && str.charAt(i-1) == 'g')//이전에 g가 있는경우
happy = true;
else if (i < len-1 && str.charAt(i+1) == 'g')//이후에 g가 있는 경우
happy = true;
else//나머지
happy = false;
}
}
return happy;
}
https://github.com/mm911/codingbat-solutions/blob/master/java/String-3/gHappy.java
728x90