728x90
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12930
📌 문제 개요
문자열이 주어졌을 때
각 단어의 짝수 인덱스 문자는 대문자,
홀수 인덱스 문자는 소문자로 변환하는 문제
주의할 점은 문자열 전체 기준이 아니라
공백을 기준으로 단어마다 인덱스를 다시 계산해야 한다.
📌 접근 방법
문자열을 한 글자씩 순회하면서 처리했다.
- 공백이면
- 공백 추가
- index를 0으로 초기화
- 공백이 아니면
- 짝수 인덱스 → 대문자
- 홀수 인덱스 → 소문자
문자열 수정이 많기 때문에 StringBuilder를 사용했다.
📌 핵심 아이디어
단어별 인덱스를 따로 관리해야 한다.
try hello world
012 01234 01234
공백 이후에는 다시 0번 인덱스부터 시작
if(s.charAt(i) == ' '){
index = 0;
}
📌 전체 코드
class Solution {
public String solution(String s) {
int index = 0;
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == ' '){
sb.append(" ");
index = 0;
} else if(index % 2 == 0){
sb.append(Character.toUpperCase(s.charAt(i)));
index++;
} else {
sb.append(Character.toLowerCase(s.charAt(i)));
index++;
}
}
return sb.toString();
}
}
📄 정리
이 문제는 문자열 자체보다
“공백 기준으로 인덱스를 초기화해야 한다”는 조건이 핵심이었다.
또한 문자열을 반복해서 더하는 대신
StringBuilder를 사용하는 문자열 처리 방식도 함께 익힐 수 있었다.
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 3진법 뒤집기 (JAVA) (0) | 2026.05.22 |
|---|---|
| 프로그래머스 최소직사각형 (JAVA) (0) | 2026.05.22 |
| 프로그래머스 삼총사 JAVA 풀이 (브루트포스, 조합, 시간복잡도) (0) | 2026.05.20 |
| 프로그래머스 최대공약수와 최소공배수 JAVA 풀이 (유클리드호제법, 시간복잡도) (0) | 2026.05.18 |
| 프로그래머스 크기가 작은 부분문자열 JAVA 풀이 (문자열, substring, 시간복잡도) (0) | 2026.05.17 |