class Solution {
public String solution(String code) {
String answer = "";
int mode = 0;
char[] codeArray = code.toCharArray(); // code 배열로 만들기
for (int i=0; i<codeArray.length; i++) {
if (mode == 0) {
if (codeArray[i] == '1') {
mode = 1;
} else if (codeArray[i] != '1' && i%2 == 0) {
answer += codeArray[i];
}
} else if (mode == 1) {
if (codeArray[i] == '1') {
mode = 0;
} else if (codeArray[i] != '1' && i%2 == 1) {
answer += codeArray[i];
}
}
}
// 빈 문자열 확인
if (answer.isEmpty()) {
answer = "EMPTY";
}
return answer;
}
}
문제 지문이 길고 복잡해서 이해하는데 꽤 오래 걸렸다 😱
답변도 너무 깔끔하지 않아서 별로 맘에 안든다!! 그리고 마지막에 empty 부분 빼먹어서 처음에 틀렸었다. 지문을 자세히 읽어야겠다.
문자열을 한 글자씩 뽑아서 char 배열로 만드는 법 : .toCharArray()
빈 문자열 확인시 .isEmpty() 메서드는 String에서만 사용이 가능하기 때문에 StringBuilder를 사용할 경우에는 .length == 0 으로 빈 문자열인지 확인해줘야한다.
다음에는 StringBuilder로 써봐야겠다.
class Solution {
public String solution(String code) {
StringBuilder answer = new StringBuilder(); // StringBuilder 사용
int mode = 0;
char[] codeArray = code.toCharArray(); // code 배열로 만들기
for (int i = 0; i < codeArray.length; i++) {
if (mode == 0) {
if (codeArray[i] == '1') {
mode = 1;
} else if (i % 2 == 0) {
answer.append(codeArray[i]);
}
} else if (mode == 1) {
if (codeArray[i] == '1') {
mode = 0;
} else if (i % 2 == 1) {
answer.append(codeArray[i]);
}
}
}
// 빈 문자열 확인
if (answer.length() == 0) {
return "EMPTY"; // 빈 문자열이면 "EMPTY" 반환
}
return answer.toString(); // StringBuilder를 String으로 변환하여 반환
}
}