[프로그래머스] 이상한 문자 만들기 (JAVA)

업데이트:

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다.
각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.



  • 제한 조건

문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.


  • 예시

image




풀이

class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] arr = s.split(" ",-1);
        char c = 0;
        int idx = 0;
        
        for(String x : arr){
            
            for(int i=0; i<x.length(); i++){
                
                if(i%2==0){
                    c = Character.toUpperCase(x.charAt(i));
                }else{
                    c = Character.toLowerCase(x.charAt(i));
                }
                answer += c;
            }
            idx++;
            
            if(idx != arr.length){
                answer += " ";
            }            
        }
        
        return answer;
    }
}


처음엔 배열을 String[] arr = s.split(“ “); 로 나눴는데 image

테스트 4, 5, 8, 9, 11번에서 실패가 나왔다.

알고보니 문자열 마지막에 공백이 있을 경우 s.split(“ “)을 할 경우 마지막 공백이 사라지기 때문에 s.split(“ “,-1)을 해서 마지막 공백도 배열에 담기게 해야한다.

EX)

s.split(“ “) -> {“try”,”hello”,”world”}
image

마지막 공백이 사라짐.

s.split(“ “,-1) -> {“try”,”hello”,”world”,””}



다른 사람 풀이

class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] arr = s.split("");
        int idx=0;
        
        for(int i=0; i<arr.length; i++){
            if(arr[i].equals(" ")){
                idx=0;
            }else if(idx%2==0){
                arr[i] = arr[i].toUpperCase();
                idx++;
            }else{
                arr[i]= arr[i].toLowerCase();
                idx++;
            }    
            
            answer += arr[i];
        }
        
        return answer;
    }
}


split(““)를 이용해 문자열을 한 글자씩 배열에 담는다.
인덱스 홀수,짝수를 알기 위해서 idx라는 변수를 선언한다.

만약 i번째가 공백이라면 새로운 단어로 바뀌는 것이기 때문에 idx를 0으로 선언한다.
공백이 아니라면 idx는 후위연산으로 하나씩 증가하게 되며, idx가 짝수라면 대문자, 홀수라면 소문자로 변경해준다.
변경된 것을 answer에 담아 반환해주면 된다.



댓글남기기