Algorithm/기타(기업등)
[CodingBat/java] gHappy
IagreeBUT
2021. 10. 11. 20:15
728x90
구분
- String - 3
문제
g가 등장 했을 때, 2개이상 연속으로 등장할 때는 true, 아니면 false
https://codingbat.com/prob/p198664
CodingBat Java String-3 gHappy
We'll say that a lowercase 'g' in a string is "happy" if there is another 'g' immediately to its left or right. Return true if all the g's in the given string are happy.
codingbat.com
풀이
두가지 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
GitHub - mm911/codingbat-solutions
Contribute to mm911/codingbat-solutions development by creating an account on GitHub.
github.com
728x90