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

Yoon Uk·2022년 10월 10일
0
post-thumbnail

문제

[프로그래머스] JadenCase 문자열 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/12951

풀이

조건

  • 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열을 만든다.
  • 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 된다.
  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나온다.
    • 숫자로만 이루어진 단어는 없다.
    • 공백문자가 연속해서 나올 수 있다.

풀이 순서

  • split()
    • String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나누는 메소드

      String s = "1 2 3 4 5";
      String[ ] strArr = s.split(" ");
      -> " "(공백)을 기준으로 나눔
      // {"1", "2", "3", "4", "5"}
      ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      String s = "1.2.3.4.5";
      String[ ] strArr = s.split(".");
      -> "."을 기준으로 나눔
      // {"1", "2", "3", "4", "5"}

  • substring(start, end+1)
    • 문자열을 start부터 end까지 자르는 메소드

      String s = "Hello World";
      s.substring(0, 5);
      // "Hello"


  • 문자열을 s.split(" ") 을 사용해 공백을 기준으로 잘라 배열에 저장한다.
  • 문자열의 길이가 0이라면(공백 이라면)
    • answer에 " "만 추가한다.
  • 문자가 있다면(공백이 아니라면)
    • substring() 을 사용한다.
    • 0번째 문자대문자로 바꾼다.
    • 1번째 문자부터 마지막까지소문자로 바꾼다.
    • 마지막에 " "(공백)을 추가한다.
  • 입력 받은 문자열의 맨 마지막이 " "(공백) 라면 바로 answer을 반환한다.
    • 위의 과정에서 " "(공백)이 추가 된 상태이기 때문이다.
  • 입력 받은 문자열의 맨 마지막이 " "(공백)이 아니라면
    • 맨 마지막 " "(공백)을 제거하고 answer을 반환한다.
    • 반환 형식에 마지막은 공백이 없어야 하기 때문이다.

코드

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
    	
    	// " " 기준으로 문자열 잘라서 배열에 넣음
    	String[] arr = s.split(" ");
    	// 잘린 문자열을 순서대로 처리
    	for(int i=0; i<arr.length; i++) {
    		String now = arr[i];
    		
    		// 문자열의 길이가 0이라면(공백 이라면)
    		// answer에 " "만 추가
    		if(arr[i].length() == 0) {
    			answer += " ";
    		} 
    		// 문자가 있다면
    		else {
    			// 0번째 문자는 대문자로
    			answer += now.substring(0, 1).toUpperCase();
    			// 1번째 문자부터 마지막까지는 소문자로
    			answer += now.substring(1, now.length()).toLowerCase();
    			// 마지막에 " " 추가
    			answer += " ";
    		}
    		
    	}
    	
    	// 입력 받은 문자열의 맨 마지막이 " " 라면 바로 answer 반환
    	if(s.substring(s.length()-1, s.length()).equals(" ")){
    		return answer;
    	}
    	
    	// 맨 마지막 " " 제거하고 answer 반환
        return answer.substring(0, answer.length()-1);
    }

}

정리

  • substring()이라는 메소드를 사용하니 편했다.

0개의 댓글