열심히 살아나갈 사람
728x90

Programmers_Level_1

2023.12.15 - [코딩테스트/프로그래머스] - [Programmers][Java]최대공약수와 최소공배수

2023.12.16 - [코딩테스트/프로그래머스] - [Programmers][Java]같은 숫자는 싫어

2023.12.16 - [코딩테스트/프로그래머스] - [Programmers][Java]3진법 뒤집기

2023.12.17 - [코딩테스트/프로그래머스] - [Programmers][Java]예산

2023.12.18 - [코딩테스트/프로그래머스] - [Programmers][Java]이상한 문자 만들기

2023.12.18 - [코딩테스트/프로그래머스] - [Programmers][Java]크기가 작은 부분문자열

2023.12.21 - [코딩테스트/프로그래머스] - [Programmers][Java]삼총사


🏁 Programmers_Level_1
📖 이상한 문자 만들기

❔ 문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 

각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.


🚫 제한 사항

⁕ 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준) 별로 짝/홀수 인덱스를 판단해야 합니다.

첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

✅ 입출력 예

s return
"try hello world" "TrY HeLlO WoRlD"

📃 입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD"를 리턴합니다.


💻 내 작성 코드

class Solution {
    public String solution(String s) {
    	// 문자열을 조작하기 위한 StringBuilder 생성
        StringBuilder sb = new StringBuilder();
        
        int cnt = 0;

	// 문자열 내의 각 문자에 대해 반복
        for (char ch : s.toCharArray()) {
        
            // 공백인 경우 cnt를 0으로 초기화, 그렇지 않으면 cnt 증가
            cnt = (ch == ' ') ? 0 : cnt + 1;
            
            // 짝수 번째 문자는 소문자로, 홀수 번째 문자는 대문자로 변환하여 StringBuilder에 추가
            sb.append((cnt % 2 == 0) ? Character.toLowerCase(ch) : Character.toUpperCase(ch));
        }

        return sb.toString();
    }
}

 

저는 StringBuilder를 활용하여 문자열을 효과적으로 조작하고, toCharArray를 활용하여 문자열을 문자 배열로 변환하여 각 문자에 접근하는 방식을 사용했습니다. 이렇게 함으로써 문자열을 효율적으로 다룰 수 있었습니다.

주어진 문자열에서 공백이 아닌 문자일 경우에 짝수 번째와 홀수 번째를 판별하여 대소문자를 변환합니다. 이때, 불필요한 배열 생성을 피하면서 각 문자를 반복하며 효율적으로 대소문자를 변환하는 방법을 채택했습니다.

또한, 이 코드는 단어별로 짝/홀수를 판별하여 대소문자를 변환하므로, 여러 단어로 이루어진 문장에서도 정확하게 동작합니다. 이를 통해 문장 내의 각 단어를 개별적으로 처리하면서 자연스럽게 대소문자를 조절할 수 있었습니다.

이렇게 하여 코드는 더욱 자연스럽게 읽히고 이해하기 쉽게 되었습니다.

728x90
profile

열심히 살아나갈 사람

@쿼리_

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!