
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
행복한 무당벌레는 다음 규칙을 따르는 보드게임이다.
문자열 b가 주어졌을 때, 모든 무당벌레를 행복하게 만들 수 있는지 판단해라. 모든 무당벌레를 행복하게 만들 수 있다면 YES를 반환해라. 그렇지 않다면 NO를 반환해라.
b = YYR_B_BR
가장 오른쪽에 있는 B와 R을 움직여서 b = YYRRBB__로 만들 수 있고, 모든 무당벌레는 행복하다. YES를 반환한다.
happyLadybugs 함수를 완성해라.
happyLadybugs 함수는 아래와 같은 매개변수를 가지고 있다.
문자열 b의 각 무당벌레 마리 수를 구한다.
int[] bugCount = new int[26];
for(int i = 0; i < b.length(); i++){
if(b.charAt(i) != '_'){
bugCount[b.charAt(i) - 'A']++;
}
}
그리고 무당벌레가 단 한 마리인 것을 찾아서 준다.
boolean isOne = false;
for(int bug : bugCount){
if(bug == 1){
isOne = true;
break;
}
}
무당벌레를 움직일 수 있는지 여부를 판단한다.
boolean isMoved = true;
if(!b.contains("_") && !isOne){
for(int i = 1; i < b.length() - 1; i++){
if(
b.charAt(i) - 'A' != b.charAt(i + 1) - 'A'
&& b.charAt(i) - 'A' != b.charAt(i - 1) - 'A'
){
isMoved = false;
break;
}
}
}
isOne과 isMoved를 이용해 결과값을 반환한다.
if(isOne || !isMoved){
return "NO";
}
return "YES";
public static String happyLadybugs(String b) {
int[] bugCount = new int[26];
for(int i = 0; i < b.length(); i++){
if(b.charAt(i) != '_'){
bugCount[b.charAt(i) - 'A']++;
}
}
boolean isOne = false;
for(int bug : bugCount){
if(bug == 1){
isOne = true;
break;
}
}
boolean isMoved = true;
if(!b.contains("_") && !isOne){
for(int i = 1; i < b.length() - 1; i++){
if(
b.charAt(i) - 'A' != b.charAt(i + 1) - 'A'
&& b.charAt(i) - 'A' != b.charAt(i - 1) - 'A'
){
isMoved = false;
break;
}
}
}
if(isOne || !isMoved){
return "NO";
}
return "YES";
}