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]크기가 작은 부분문자열
🏁 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를 활용하여 문자열을 문자 배열로 변환하여 각 문자에 접근하는 방식을 사용했습니다. 이렇게 함으로써 문자열을 효율적으로 다룰 수 있었습니다.
주어진 문자열에서 공백이 아닌 문자일 경우에 짝수 번째와 홀수 번째를 판별하여 대소문자를 변환합니다. 이때, 불필요한 배열 생성을 피하면서 각 문자를 반복하며 효율적으로 대소문자를 변환하는 방법을 채택했습니다.
또한, 이 코드는 단어별로 짝/홀수를 판별하여 대소문자를 변환하므로, 여러 단어로 이루어진 문장에서도 정확하게 동작합니다. 이를 통해 문장 내의 각 단어를 개별적으로 처리하면서 자연스럽게 대소문자를 조절할 수 있었습니다.
이렇게 하여 코드는 더욱 자연스럽게 읽히고 이해하기 쉽게 되었습니다.
'Traning > 코딩테스트' 카테고리의 다른 글
[Programmers][Java]다음 큰 숫자 (1) | 2023.12.20 |
---|---|
[Programmers][Java]크기가 작은 부분문자열 (0) | 2023.12.18 |
[Programmers][Java]예산 (1) | 2023.12.17 |
[Programmers][Java]3진법 뒤집기 (0) | 2023.12.16 |
[Programmers][Java]같은 숫자는 싫어 (0) | 2023.12.16 |