본문 바로가기

Java/Java 알고리즘 프로그래머스

[프로그래머스-LEVEL 1] 15. 이상한 문자 만들기

728x90
반응형
  • 이상한 문자 만들기
문제 설명

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

제한 사항
  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s return
"try hello world" "TrY HeLlO WoRlD"
입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

 


class Solution {
    public String solution(String s) {
        String answer = "";
        String [] arr=s.split(" ");
        //try,hello,world
        for(int i=0;i<arr.length;i++){
            String[] str=arr[i].split("");
            arr[i]="";
            //t,r,y
                for(int j=0;j<str.length;j++){
                    if(j%2==0){
                        str[j]=str[j].toUpperCase();
                        //T,r,Y
                    }
                    else{
                        str[j]=str[j].toLowerCase();
                    }
                    arr[i]+=str[j];
                }
        if(i==arr.length-1){
            answer=answer.concat(arr[i]);
        }
        else{
            answer=answer.concat(arr[i]+" ");
            }
        }
        return answer;
    }
}

-> 실패한 테스트 케이스가 존재한다.

-> 문제 설명에 각 단어는 하나 이상의 공백 문자로 구분되어있습니다.라고 되어있는데

-> 이 설명에는 끝에도 공백문자가 들어갈 수 있다는 말을 포함한다.

-> 따라서 끝에 공백문자가 오는 테스트케이스에서 실패한다.

-> 공백문자가 온다면, split(" ")을 이용할 경우 공백문자는 제외된다.

-> split(" ", -1)을 이용한다면 끝에 공백문자가 와도 공백문자를 인식한다.

 

 

class Solution {
    public String solution(String s) {
        String answer = "";
        String [] arr=s.split(" ",-1);
        //try,hello,world
        for(int i=0;i<arr.length;i++){
            String[] str=arr[i].split("");
            arr[i]="";
            //t,r,y
                for(int j=0;j<str.length;j++){
                    if(j%2==0){
                        str[j]=str[j].toUpperCase();
                        //T,r,Y
                    }
                    else{
                        str[j]=str[j].toLowerCase();
                    }
                    arr[i]+=str[j];
                }
        if(i==arr.length-1){
            answer=answer.concat(arr[i]);
        }
        else{
            answer=answer.concat(arr[i]+" ");
            }
        }
        return answer;
    }
}

 

 

728x90
반응형