12951. JadenCase 문자열 만들기
업데이트 시간 : 2023-12-09 03:05:53 +0000[level 2] JadenCase 문자열 만들기 - 12951
성능 요약
메모리: 76.1 MB, 시간: 1.20 ms
구분
코딩테스트 연습 > 연습문제
채점결과
정확성: 100.0
합계: 100.0 / 100.0
제출 일자
2023년 12월 6일 12:5:52
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
입출력 예
| s | return |
|---|---|
| "3people unFollowed me" | "3people Unfollowed Me" |
| "for the last week" | "For The Last Week" |
※ 공지 - 2022년 1월 14일 제한 조건과 테스트 케이스가 추가되었습니다.
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
💡 Solutions
📄 JadenCase 문자열 만들기.java
class Solution {
public String solution(String s) {
String answer = "";
String[] words = s.toLowerCase().split("");
Boolean flag = true;
for(String word : words){
answer += (flag) ? word.toUpperCase() : word;
flag = (word.equals(" ")) ? true : false;
}
return answer;
}
}
// 왜 계속 실패했습니다가 나오나 했었는데, " " 공백이 중복으로 나오는걸 고려를 안했어서
String[] words = s.toLowerCase().split(" "); // 이런식으로 작업을 했던게 문제가 되었었다.
// 아래는 그 전에 정 안되겠어서 스트링 빌더를 활용해 만들었던 것
-- 효율은 이게 더 좋게나옴,
1. Character로 탐색을 하는 것으로 인한 한번만 순회하는 것,
2. split으로 분리하지 않으므로 메모리소모 및 추가작업을 안하는 것
이 두가지가 크다고 생각함
class Solution {
public String solution(String s) {
StringBuilder answer = new StringBuilder();
// 첫 글자를 대문자로 시작하기 위해 'true'로 설정
boolean isNewWord = true;
for (char ch : s.toCharArray()) {
if (ch == ' ') {
isNewWord = true;
answer.append(ch);
} else {
if (isNewWord) {
answer.append(Character.toUpperCase(ch));
isNewWord = false;
} else {
answer.append(Character.toLowerCase(ch));
}
}
}
return answer.toString();
}
}