본문 바로가기

문제 풀이/Programmers

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

문제 출처 - Programmers

문제는 여기

 

코딩테스트 연습 - 이상한 문자 만들기

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

programmers.co.kr


[풀이]

1. 소문자로만 입력이 되는지 모르므로 toLowerCase를 사용해 전체 문자열을 소문자로 만들어준다.

2. 문자열을 split을 사용해 공백으로 잘라서 배열에 담아준다.

3. 잘린 문자열을 짝수번째 인덱스는 대문자, 홀수번째 인덱스는 소문자로 넣어준다.

4. 잘린 문자열이 끝날 때마다 공백을 추가해준다.

5. 마지막에 공백이 추가가 되므로 substring을 사용해서 마지막 공백을 제거해준다.

[접근]

1. 문자열을 공백으로 잘라주면 되겠다고 생각했다.

2. 잘린 문자열을 짝수 인덱스는 대문자, 홀수 인덱스는 소문자로 만들어주면 되겠다고 생각하였다.

[코드]

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        // 전체를 소문자로 변환
        s = s.toLowerCase();
        
        // 문자열을 공백으로 잘라서 담기
        String[] str = s.split(" ", -1);
        
        for (int i = 0; i < str.length; i++) {
            for (int j = 0; j < str[i].length(); j++) {
                // 짝수번째는 대문자, 홀수번째는 소문자
                if (j % 2 == 0)
                    answer += Character.toUpperCase(str[i].charAt(j));
                else
                    answer += str[i].charAt(j);
            }
            
            answer += " ";
        }
        
        // 마지막에 공백 1개 있는것을 지워주기
        return answer.substring(0, answer.length() - 1);
    }
}