말하는 컴공감자의 텃밭

프로그래머스 코드처리하기 <6점> - 자바(java) StringBuilder, append, charAt 본문

알고리즘/Programmers - Java

프로그래머스 코드처리하기 <6점> - 자바(java) StringBuilder, append, charAt

현콩 2023. 5. 13. 19:40
728x90

코드 처리하기
네?..

프로그래머스 코드처리하기 

 

네..

프로그래머스 코드처리하기 

 

문제가 이해가 안되서 손으로 써가면서 이해했네요,, 껄껄~ 

 

정리하자면

 

code가 주어지고, 문자열은 1과 알파뱃으로 구성되어 있습니다.

mode가 존재하며 0과 1에 따라 조건이 주어지고, code[idx]에 따라 문자열을 추가할지 결정해야합니다.

 

mode가 0인 경우, idx가 짝수일때 문자열을 추가.

mode가 1인 경우, idx가 홀수일때 문자열을 추가합니다.

만약 1을 만나게 될경우 모드를 전환합니다. ex) 0 > 1, 1 > 0

시작할때는 0으로 시작하며, ret가 비어있다면 "EMPTY"를 출력합니다.

 

조건에 따라 코드를 작성해봅시다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
    class Solution {
    public String solution(String code) {
        StringBuilder ret = new StringBuilder();
        int mode = 0;
        
        for (int i = 0; i<code.length(); i++){
            if (code.charAt(i) == '1'){
                mode = (mode == 1) ? 0 : 1;
            }else if(mode == 1 && i % 2 != 0){
                ret.append(code.charAt(i));
            }else if(mode == 0 && i % 2 == 0){
                ret.append(code.charAt(i));
            }
        }
       if (ret.length() == 0) {
           ret.append("EMPTY");
       }
        
        return ret.toString();
    }
}
cs

 

StringBuilder를 사용했고, 문자 비교와 조건을 따져서 append로 ret에 추가해줬습니다.

ret.length()가 0이라면 비어있는것 이므로, EMPTY를 넣어줬습니다.

 

간단쓰 간단쓰

 

물론 StringBuilder를 사용하지 않고도 code.charAt(i) 를 ret에 바로 넣으면서도 가능합니다.

 ret += code.charAt(i);           

 

프로그래머스 1300점
이제야 1300점..

 

728x90
Comments