문제풀이/프로그래머스

[Java 자바] 프로그래머스 Level.0 코드 처리하기

꼬ㄴi 2023. 8. 5. 21:08

문제🔒   

https://school.programmers.co.kr/learn/courses/30/lessons/181932

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


풀이 과정🔌

1. 문자열 code 를 문자 배열로 바꿔준다. 문자열 길이만큼 반복문을 돌면서 문자를 검사해야 할 거니까

char[] codeArr = code.toCharArray();

 

2. 초기모드 mode를 초기값 0으로 선언한다.

int mode = 0;

 

3. 먼저 모드가 0 일때와 1일 때로 조건을 각각 분리해서 if문으로 만들어줬고

    그 조건문 안에서도 인덱스값이 홀수일 경우와 짝수일 경우로 조건을 분리해서 코드를 처리했다.

    반복문을 다 돌고 난 후 빈 문자열일 경우에는 "EMPTY" 라는 문자열을 넣어줌

for(int i=0;i<codeArr.length;i++){
    if(mode == 0){
        if(codeArr[i] != '1'){
            if(i % 2 == 0 || i == 0) answer = answer + codeArr[i];
        }else{
            mode = 1;
        }
    }else if(mode == 1){
        if(codeArr[i] != '1'){
            if(i % 2 == 1) answer = answer + codeArr[i];
        }else{
            mode = 0;
        }
    }
}

if(answer.equals("")) answer = "EMPTY";

풀이🔓

public class Solution {
	public String solution(String code) {
        String answer = "";
        
        char[] codeArr = code.toCharArray();
        
        //기본 시작 모드
        int mode = 0;
        
        for(int i=0;i<codeArr.length;i++){
            if(mode == 0){
                if(codeArr[i] != '1'){
                    if(i % 2 == 0 || i == 0) answer = answer + codeArr[i];
                }else{
                    mode = 1;
                }
            }else if(mode == 1){
                if(codeArr[i] != '1'){
                    if(i % 2 == 1) answer = answer + codeArr[i];
                }else{
                    mode = 0;
                }
            }
        }
        
        if(answer.equals("")) answer = "EMPTY";
        
        return answer;
    }
}

 

 

지문에 적힌대로 직관적으로 코드를 짰는데 깔끔하고 영리하게(?) 작성한 거 같진 않아서 맘에 안 든다

근데 다른 게 생각이 안 나 . . . ㅋㅋㅋㅋㅋ 더 깔끔하게 짤 수 있을 것 같은디 -_-