문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다. mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다. mode가 0일 때 code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다. mode가 1일 때 code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 1에서 0으로 바꿉니다. 문자열 code를 통해 만들어진 문자열 ret를 return 하는 solution 함수를 완성해 주세요. 단, 시작할 때 mode는 0이며, return 하려는 ret가 만약 빈 문자열이라면 대신 "EMPTY"를 return 합니다.
class Solution {
public String solution(String code) {
String answer = "";
String mode = "0";
StringBuffer a= new StringBuffer();
for (int i = 0; i < code.length(); i++) {
if(mode.equals("0")){
if(code.charAt(i)=='1'){
mode="1";
}
else if(i%2==0){
a.append(code.charAt(i));
}
}else if(mode.equals("1")){
if(code.charAt(i)=='1'){
mode="0";
}
else if(i%2==1){
a.append(code.charAt(i));
}
}
answer =a.toString();
}
if(answer.equals("")){
return "EMPTY";
}
return answer;
}
}
문제가 좀 길어서 그렇지 간단한 문제였다.
문제에 조건대로 각각 mode 에 맞는 경우에 따라서만 문자를 추가해주면 되니까
문자열이 계속 변환하는 구조에맞는 StirngBuffer 를 써줬다.
그래서 for 문과 if 문을 통해서 그 조건을 입력하고 마지막에 String 화 시켜서 답변에 넣고
빈값일때도 엠티가 반환되게 해주면 끝이다.!