Programmers/JAVA

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

giggs 2023. 1. 10. 07:27

 

 

1. 문제 설명

 

 

 

 


 

 

2. 문제 풀이 핵심이라 생각하는 점

  • 소문자로 만든다 -> 공백을 기준으로 문자열 배열 얻는다 -> 맨 앞글자를 대문자로 바꿔준다.
  • 쉬웠다.. 하지만 여러 가지 고려할 상황들을 추가해주어야 하였다.
  • 공백이 연속으로 나오면 결괏값에도 공백이 연속으로 나오도록 해주어야 한다.
  • 주어진 문자열의 마지막이 공백으로 끝난다면 공백으로 출력되도록 해주어야 한다.
  • 이 점만 생각해서 풀이하면 풀이가 쉬워질 것 같다.

 

 

 


 

 

 

3. 정답 코드 확인 및 활용 메소드 체크

 

 

3-1 : 정답 코드 확인

 

class Solution {
    public String solution(String s) {
        String answer = "";
        
        //소문자로 만들고 공백 기준으로 문자배열 얻기
        s = s.toLowerCase();
		String[] splitS = s.split(" ");
		
		for (int i = 0; i < splitS.length; i++) {
        
        	//공백이면 공백추가해주고 continue;
			if(splitS[i].isEmpty()) {
                answer += " ";
				continue;
			}else if(i>0 && i != splitS.length){ //맨처음과 맨 마지막에는 공백 추가X
				answer += " ";
			}
			
            //맨 앞글자 대문자로 만든 후 변경해주기
			char first = Character.toUpperCase((splitS[i].charAt(0)));
			splitS[i] = first +splitS[i].substring(1); 
			answer += splitS[i];
		}
        
        //문자열 맨 마지막이 " "이라면 공백 추가해주기
        if( s.charAt(s.length()-1) == ' ') answer += " ";
               
        return answer;
    }
}

 

 

 


 

 

4. 공부하고 싶은 다른 분의 풀이

  • 난 무엇을 한 것인가.. ㅎㅎ
  • 문자열을 하나하나 분리하여 배열로 만들고 boolean flag를 활용
  • 방금 더해준 문자열이 " " 공백이라면
  • 다음에 붙여줄 문자열을 대문자로 만들어주기.
  • 공백이 아니라면 그대로 더해주기

 

class Solution {
  public String solution(String s) {
        String answer = "";
        String[] sp = s.toLowerCase().split("");
        boolean flag = true;

        for(String ss : sp) {
            answer += flag ? ss.toUpperCase() : ss;
            flag = ss.equals(" ") ? true : false;
        }

        return answer;
  }
}