프로그래머스

[프로그래머스_Level2] JadenCase 문자열 만들기

빙수빈수 2021. 7. 20. 23:53

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();
	 }
}

 

[코드]

 나름대로 조건을 나눠 코드를 짰지만 계속해서 오답 처리를 받아 다른 사람의 코드를 참고해서 해결하였다. 어떻게 단어의 첫 번째 문자인지 판별할 수 있을까를 가장 많이 고민했는데, 그 해답은 '이전 문자가 공백이라면 단어의 첫 번째 문자인지 알 수 있다'는 것이다. 이러한 아이디어를 떠올린다면 코드의 구성이 간결해질 수 있다. 알고보면 아주 간단한 아이디어지만 스스로 떠올리지 못해 아쉬웠다.