아무고토 몰라효
[프로그래머스] JadenCase 문자열 만들기 본문
반응형
문제
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
Example 1:
| s | return |
| --- | --- |
| "3people unFollowed me" | "3people Unfollowed Me" |
s | return |
---|---|
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
Constraints:
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
고민
단순하게 공백 문자로만 구분지어 처리하면 될것같다고 생각하는 찰나, 공백문자가 연속해서 나올 수 있습니다.
에서 구분지면 안되겠구나 싶었다.
하지만, 단어의 첫번째 글짜를 확인하기 위해선 공백문자가 필히 조건이 될것이다.
그래서 내가 고민한 방법은
- 거꾸로 탐색한다.
- 공백 문자가 앞에 있다면 대문자로 변경한다.
- 그 외는 다 소문자로 변경한다.
해당 방법을 가지고 풀어볼 것이다.
해결
class Solution {
fun solution(s: String): String {
val sb = StringBuilder()
var i = s.length - 1
while (i >= 0) {
if (i != 0 && s[i - 1] == ' ' || i == 0) {
val change = s[i].uppercase()
sb.append(change)
} else {
val change = s[i].lowercase()
sb.append(change)
}
i--
}
return sb.reversed().toString()
}
}
반복문을 돌며 거꾸로 탐색하도록 하였다. IndexOutOfBoundsException
가 생길 수 있으니 &&
조건으로 앞에 있는 요소가 공백문자인지 아닌지 확인하고, 문자열의 제일 첫번째 글짜는 무조건 대문자로 해야하기때문에 ||
조건으로 처리했다.
그 외의 요소들은 다 소문자로 변경하여 append 처리를 했다.
그리고 반복문 마지막에 감소식으로 인덱스를 처리했다.
결과
후기
생각해보니 맨 처음부터 모든 요소들을 소문자로 변경하고 해도 됫을 것 같다.
반응형
'Coding Test' 카테고리의 다른 글
[프로그래머스] 이진 변환 반복하기 (0) | 2025.08.04 |
---|---|
[LeetCode] Add Strings (2) | 2025.08.04 |
[LeetCode] Is Subsequence (1) | 2025.07.18 |
[LeetCode] Find the Difference (1) | 2025.07.15 |
[LeetCode] Reverse String (3) | 2025.07.15 |
Comments