728x90
반응형
프로그래머스 - JadenCase 문자열 만들기 (Java 풀이)
https://school.programmers.co.kr/learn/courses/30/lessons/12951
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
Java 풀이
import java.util.*;
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
String[] strArr = s.toLowerCase().split(" "); // 미리 소문자로 변경하여 split한다.
for(int i=0; i<strArr.length; i++) {
String str = strArr[i];
if(str.length() == 0) { // 단어가 공백이면 공백만 추가하여 continue 한다.
sb.append(" ");
continue;
}
sb.append(str.substring(0,1).toUpperCase()); // 첫문자만 대문자처리하여 append
sb.append(str.substring(1,str.length())); // 이후문자 소문자로 append
sb.append(" "); // 한단어가 끝났으므로 공백 append
}
// 중요! 해당조건처리가 없으면 case 8번이 실패로 떨어짐
// 마지막 공백이 기존부터 있던 공백이였으면 마지막 공백을 지우지 않는다.
if(!" ".equals(s.substring(s.length()-1, s.length()))) {
sb.deleteCharAt(sb.lastIndexOf(" "));
}
return sb.toString();
}
}
처음에 예제 코드실행은 금방했으나 공백처리나 이미 공백이였던 문자열에 대한 것에 대해 case별로 오류 이유를 파악한다고 오래걸렸던 문제였다...
주석에 설명은 달아놨으니 참고하면 될 것 같습니당.
728x90
반응형
'개발 기록 > 코딩테스트 풀이 기록' 카테고리의 다른 글
[프로그래머스] 콜라 문제 (Java) (2) | 2022.11.06 |
---|---|
[프로그래머스] 같은 숫자는 싫어 (Java) - 스택/큐 (0) | 2022.11.05 |
[프로그래머스] 모의고사 (Java풀이) - 완전탐색 (0) | 2022.10.29 |
[프로그래머스] 약수의 개수와 덧셈 (java) (0) | 2022.10.22 |
[프로그래머스] 없는 숫자 더하기 (java) (0) | 2022.10.15 |