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

JIHYUN·2021년 8월 30일
0

📌이상한 문자 만들기

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

📌제한사항

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

📌입 출력 예

sreturn
"try hello world""TrY HeLlO WoRlD"

📌사용 언어 : JAVA

📌solution

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

😎풀이

우선 입력받은 문자열 s를 모두 toLowerCase를 사용하여 모두 소문자로 변경해 주었다. 혹시라도 대문자가 섞여있으면 결과가 엉망으로 나올 것이기 때문에.. 그 후 arr배열에 문자열 s 를 공백을 기준으로 나누어 주었다. 그러면 arr 배열의 원소는 입력받은 문자열의 단어 하나하나가 된다.
그 다음에 for문을 사용하여 arr의 단어를 arr2에 문자 하나씩 담아준다. 그리고 j가 0으로 나누어 떨어질 때, 즉 짝수번째 문자는 toUpperCase를 사용해 대문자로 만들어 다시 arr2[j]에 담아준다.
그리고 변경한 arr[j]를 각각 answer에 담은 후, for문을 한 바퀴 돌 때마다 answer에 공백을 더하고 만약 i가 arr의 길이보다 1 작을 때, 즉 for문의 마지막에는 공백 더해주는 과정을 생략하고 answer를 반환한다.


처음에는
String[] arr = s.split(" ", -1);
이 부분을
String[] arr = s.split(" ");
이렇게 작성했었다.
그렇게 하니 몇 개의 테스트 케이스를 통과하지 못하였는데, 찾아보니 테스트 케이스 중에 "try hello world    " 처럼 뒤에도 공백이 들어가는 경우 내 코드에서 문제가 생기는 것이란다. 그래서 split("", -1) 를 해 주면 무사히 테스트케이스를 통과 할 수 있다.

profile
이것저것 공부중

0개의 댓글