✏️ 문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
✏️ code
📌 split(" ") vs. split("")
- split(" "): 공백으로 기준으로 문자열을 나누는데, 이 방식은 연속된 공백이 있을 경우 제대로 처리하지 못할 수 있습니다.
- split(""): 문자열을 각 문자로 나누는 방식입니다.
📌 boolean isFirst = false;
- 단어의 첫 문자인지 여부를 확인하는 역할로 초기값이 false인 이유는 첫 번째 문자가 대문자로 시작되도록 하기 위해서입니다.
- if (c == ' ') {...}: 공백을 만났을 때 isFirst를 false로 설정합니다.
- else {...}: 공백이 아니라라면, 공백 직후에 오는 문자가 "첫번째" 문자일 것이기 때문에
(1) if (!isFirst) {...}: !false라면 대문자로 변경 (숫자/문자 구분없이 첫번째면 무조건 대문자로 변경)
이후 isFirst = true로 변경되기 때문에 다음 공백을 찾기 전까진 else문으로 빠집니다.
(2) else {...}: 첫번째 문자가 아니라면 소문자로 변경합니다.
class Solution {
public String solution(String s) {
StringBuilder result = new StringBuilder();
boolean isFirst = false;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ' ') {
result.append(" ");
isFirst = false;
} else {
if (!isFirst) {
result.append(Character.toUpperCase(c));
} else {
result.append(Character.toLowerCase(c));
}
isFirst = true;
}
}
return result.toString();
}
}반응형
'Java > 코딩테스트' 카테고리의 다른 글
| [java/프로그래머스/77884] 약수의 개수와 덧셈 (Math.sqrt(i) == 0) (0) | 2025.02.17 |
|---|---|
| [java/프로그래머스/12940] 최대공약수와 최소공배수 (GCD(A, B) = GCD(B, A%B), LCM(A, B) = A*B / GCD(A, B)) (0) | 2025.02.17 |
| [java/프로그래머스/120907] OX퀴즈 (.split) (1) | 2025.02.13 |
| [java/프로그래머스/120863] 다항식 더하기 (polynomial.split("\\+ "), .contains, .equals, .replace, .append, .toString) (0) | 2025.02.13 |
| [java/프로그래머스/120878] 유한소수 판별하기 (gcd) (0) | 2025.02.12 |