🔗 문제 링크
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 문제 개요
문자열 s가 주어졌을 때, 각 단어를 JadenCase 형태로 변환하는 문제이다.
JadenCase는 각 단어의 첫 문자가 대문자이고, 나머지 문자는 소문자인 문자열을 의미한다.
단, 첫 문자가 숫자인 경우 숫자는 그대로 두고, 그 뒤에 나오는 알파벳들은 소문자로 변환해야 한다.
또한 문자열에는 공백이 연속해서 나올 수 있으므로, 기존 공백 형태를 그대로 유지해야 한다.
📌 접근 방법
문자열을 공백 기준으로 나누는 대신, 문자 하나씩 순회하면서 처리한다.
현재 문자가 단어의 첫 번째 문자인지 판단하기 위해 isFirst 변수를 사용한다.
공백을 만나면 그대로 결과 문자열에 추가하고, 다음 문자가 새 단어의 첫 글자가 되도록 isFirst를 true로 변경한다.
공백이 아닌 문자를 만났을 때는 isFirst 값에 따라 대문자 또는 소문자로 변환한다.
📌 핵심 아이디어
1. 단어의 첫 글자인지 확인하기
isFirst는 현재 문자가 단어의 첫 번째 문자인지 확인하기 위한 변수이다.
처음 문자는 단어의 시작이므로 true로 설정한다.
boolean isFirst = true;
2. 공백을 만나면 다음 문자를 단어의 첫 글자로 처리하기
공백은 변환하지 않고 그대로 결과 문자열에 추가한다.
그리고 공백 다음에 나오는 문자는 새로운 단어의 첫 글자가 되므로 isFirst를 true로 변경한다.
if (ch == ' ') {
answer += ch;
isFirst = true;
}
3. 첫 글자는 대문자로 변환하기
현재 문자가 단어의 첫 글자라면 대문자로 변환한다.
숫자인 경우 Character.toUpperCase()를 사용해도 그대로 유지된다.
if (isFirst) {
answer += Character.toUpperCase(ch);
isFirst = false;
}
4. 첫 글자가 아닌 문자는 소문자로 변환하기
단어의 첫 글자가 아닌 문자는 모두 소문자로 변환한다.
이를 통해 "unFollowed" 같은 문자열도 "Unfollowed" 형태로 만들 수 있다.
else {
answer += Character.toLowerCase(ch);
}
📌 전체 코드
class Solution {
public String solution(String s) {
String answer = "";
boolean isFirst = true;
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch == ' ') {
answer += ch;
isFirst = true;
} else {
if (isFirst) {
answer += Character.toUpperCase(ch);
isFirst = false;
} else {
answer += Character.toLowerCase(ch);
}
}
}
return answer;
}
}
📄 정리
- 문자열을 한 글자씩 순회하면서 JadenCase로 변환했다.
- 공백을 기준으로 단어의 시작 여부를 판단했다.
- 연속 공백을 유지해야 하므로 split()보다 직접 순회 방식이 적합하다.
- 첫 문자는 대문자, 나머지 문자는 소문자로 변환하는 것이 핵심이다.
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 올바른 괄호 JAVA 풀이 (스택) (0) | 2026.06.22 |
|---|---|
| 프로그래머스 최솟값 만들기 JAVA 풀이 (그리디, 정렬) (0) | 2026.06.21 |
| 프로그래머스 최댓값과 최솟값 JAVA 풀이 (문자열, 구현) (0) | 2026.06.18 |
| 프로그래머스 이웃한 칸 JAVA 풀이 (0) | 2026.06.18 |
| 프로그래머스 실패율 JAVA 풀이 (정렬, 구현) (0) | 2026.06.17 |