본문으로 바로가기

📘문제 설명

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

https://school.programmers.co.kr/learn/courses/30/lessons/12930?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


📌 제한조건

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

💡 개념 설명

  • 결과 생성 준비: 문자열을 효율적으로 조합하기 위해 StringBuilder 객체를 생성하고, 단어별 인덱스를 관리할 변수 idx를 0으로 초기화합니다.
  • 문자열 순회: 입력받은 문자열 s를 split("")을 사용하여 한 글자씩 분리하거나 charAt()을 이용해 루프를 돌립니다.
  • 공백 처리: 현재 문자가 공백인 경우 그대로 추가하고, 단어가 바뀌는 시점이므로 idx를 다시 0으로 초기화합니다.
  • 대소문자 변환: 문자가 공백이 아닐 경우, idx가 짝수면 대문자(toUpperCase()), 홀수면 소문자(toLowerCase())로 변환하여 추가한 후 idx를 1 증가시킵니다.
  • 결과 반환: 완성된 StringBuilder를 문자열로 변환하여 반환합니다.

📎 입출력 예시


📎 코드

public class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        int idx = 0;

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);

            if (c == ' ') {
                idx = 0;
                sb.append(" ");
            } else {
                if (idx % 2 == 0) {
                    sb.append(Character.toUpperCase(c));
                } else {
                    sb.append(Character.toLowerCase(c));
                }
                idx++;
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        Solution sol = new Solution();

        // 테스트 케이스
        String s = "try hello world";
        String result = sol.solution(s);

        // 예상 출력: "TrY HeLlO WoRlD"
        System.out.println("입력: \"" + s + "\"");
        System.out.println("결과: \"" + result + "\"");
    }
}

 


📎 결과