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