본문 바로가기
🫧 코테 : CodingTest

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

by 예옹이 2025. 1. 14.

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

 


 

해당 문제는 공백을 기준으로 단어가 나뉩니다.

그런데 그 공백이 몇개인지를 결과물로 동일하게 출력해주어야 합니다. 예를 들어

ex ) "abc     de  " -> "AbC     De  "

이런식으로 출력되어야 합니다.

 

 

1. 초기화

StringBuilder answer = new StringBuilder();
int num = 0;

answer는 StringBuilder로 초기화해주고

num은 공백 이후 나타날 단어의 index입니다.

 

2. 문자열의 문자가 공백인지 판단 후 answer에 삽입

char c = s.charAt(i);

if (c == ' ') {
    answer.append(c);
    num = 0;
}

 

3. 공백이 아니라면 단어의 index에 맞게 대소문자 변환

else {
    if (num % 2 == 0) {
        answer.append(Character.toUpperCase(c));
        num++;
    } else {
        answer.append(Character.toLowerCase(c));
        num++;
    }
}

 


 

import java.util.*;

class Solution {
    public String solution(String s) {
        StringBuilder answer = new StringBuilder();
        int num = 0;
        
        for (int i=0; i<s.length(); i++) {
            char c = s.charAt(i);
            
            if (c == ' ') {
                answer.append(c);
                num = 0;
            } else {
                if (num % 2 == 0) {
                    answer.append(Character.toUpperCase(c));
                    num++;
                } else {
                    answer.append(Character.toLowerCase(c));
                    num++;
                }
            }
        }
        
        return answer.toString();
    }
}

 

반례가 떠오르지 않아 계속 다른 방향으로 풀다보니 생각보다 이 쉬운 문제에 시간을 너무 많이 썼습니다 ㅜㅜ

제 다른 코테 풀이는 git에서도 확인하실 수 있습니다

https://github.com/eonwy/programmers

 

GitHub - eonwy/programmers: 🔎 coding-test (programmers) 🔍

🔎 coding-test (programmers) 🔍. Contribute to eonwy/programmers development by creating an account on GitHub.

github.com