반응형
728x90
반응형
문제 12901번
https://programmers.co.kr/learn/courses/30/lessons/12951
코딩테스트 연습 - JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건
programmers.co.kr
풀이
(1) 런타임 에러 발생
예시로 "3people Unfollowed Me" 처럼 공백이 2개 이상 들어간 경우 발생한다.
public String solution(String s) {
StringBuilder answer = new StringBuilder();
String[] arr = s.split(" ");
for (String value : arr) {
char first = value.charAt(0);
answer.append(String.valueOf(first).toUpperCase())
.append(value.substring(1).toLowerCase())
.append(" ");
}
return answer.toString().trim();
}
(2) 다른 방안
문자열을 반복문으로 전부 체크한다. isFirst 라는 값으로 첫번째 문자열 (대문자로 변환될) 인지 체크하고, 그 외는 소문자로 변환한다.
public String solution(String s) {
StringBuilder answer = new StringBuilder();
/* 첫번째 문자 여부 */
boolean isFirst = true;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' ') {
answer.append(s.charAt(i));
isFirst = true; /* 공백 다음엔 첫번째 문자 */
} else {
if (isFirst) { /* 첫번째 문자의 경우 */
answer.append(String.valueOf(s.charAt(i)).toUpperCase());
isFirst = false; /* 첫번째 문자가 아님 */
} else {
answer.append(String.valueOf(s.charAt(i)).toLowerCase());
}
}
}
return answer.toString();
}
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[프로그래머스] Level2 _42586번: 기능개발 (JAVA) (0) | 2021.09.10 |
---|---|
[프로그래머스] Level2_12924번: 숫자의 표현 (JAVA) (0) | 2021.09.05 |
[프로그래머스] Level1 _12901번: 2016년 (JAVA) (0) | 2021.08.28 |
[프로그래머스] Level1_12903번: 같은 숫자는 싫어 (JAVA) (0) | 2021.08.28 |
[Baekjoon 9012번] 괄호 풀이 (with 스택) (0) | 2021.08.27 |