Programmers/Lv.2

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

dbssk 2023. 5. 4. 05:38

코딩테스트 연습 - 이상한 문자 만들기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

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

제한 사항
  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
풀이
  • 주어진 문자열을 StringTokenizer를 사용하여 공백을 기준으로 분리

  • while 루프를 이용하여 토큰이 남아있는 동안 반복
    • 토큰이 공백인 경우: 그대로 answer에 추가
    • 토큰이 공백이 아닌 경우: 문자열을 반복하여 문자 하나씩 꺼내면서 인덱스에 따라 대소문자로 변환하면서 추가
import java.util.*;

class Solution {
    public String solution(String s) {
        StringBuilder answer = new StringBuilder();
        StringTokenizer st = new StringTokenizer(s, " ", true);
        
        while (st.hasMoreTokens()) {
            String token = st.nextToken();
            if (token.equals(" ")) {
                answer.append(" ");
                continue;
            }
            
            int cnt = 0;
            for (char c : token.toCharArray()) {
                if (cnt % 2 == 0) {
                    answer.append(Character.toUpperCase(c));
                } else {
                    answer.append(Character.toLowerCase(c));
                }
                cnt++;
            }
            
        }
        
        return answer.toString();
    }
}