[프로그래머스][Java] 코드 처리하기 (Lv.0)

박현아·2024년 10월 22일
0

programmers-java

목록 보기
16/35

👩‍💻 문제

🙋‍♀️ 답변

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()

StringBuilder를 사용한 답변 !

빈 문자열 확인시 .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으로 변환하여 반환
    }
}

0개의 댓글