https://programmers.co.kr/learn/courses/30/lessons/12951
코딩테스트 연습 - JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건
programmers.co.kr
[문제]
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
[제한 조건]
- s는 길이 1 이상인 문자열입니다.
- s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
- 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )
[코드]
class Solution {
public static String solution(String s) {
StringBuilder answer=new StringBuilder();
// 첫번째 문자는 무조건 대문자로 변경
String first=s.charAt(0)+"";
answer.append(first.toUpperCase());
for(int i=1;i<s.length();i++) {
String now=s.charAt(i)+"";
if(now.equals(' ')) // 공백이면 answer에 공백 추가
answer.append(" ");
// 이전 문자열이 공백이라면 대문자로 변경
else if(s.charAt(i-1)==' ')
answer.append(now.toUpperCase());
// 이전 문자열이 공백이 아니라면 소문자로 변경
else
answer.append(now.toLowerCase());
}
// StrintBuilder를 String 형식으로 변환하여 return
return answer.toString();
}
}
[코드]
나름대로 조건을 나눠 코드를 짰지만 계속해서 오답 처리를 받아 다른 사람의 코드를 참고해서 해결하였다. 어떻게 단어의 첫 번째 문자인지 판별할 수 있을까를 가장 많이 고민했는데, 그 해답은 '이전 문자가 공백이라면 단어의 첫 번째 문자인지 알 수 있다'는 것이다. 이러한 아이디어를 떠올린다면 코드의 구성이 간결해질 수 있다. 알고보면 아주 간단한 아이디어지만 스스로 떠올리지 못해 아쉬웠다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스_Level2] 행렬의 곱셈 (0) | 2021.07.21 |
---|---|
[프로그래머스_Level1] 크레인 인형뽑기 게임 (0) | 2021.07.21 |
[프로그래머스_Level2] N개의 최소공배수 (0) | 2021.07.20 |
[프로그래머스_Level1] K번째 수 (0) | 2021.07.19 |
[프로그래머스_Level1] 신규 아이디 추천_2021 카카오 신입 공채 (0) | 2021.07.19 |