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

솔솔·2023년 2월 23일
0
post-thumbnail


📑 문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.



🧑🏻‍💻 문제 풀이

class Solution {
    public String solution(String s) {
        String answer = "";

        String[] arr = s.split(" ");
        
        for(int i=0;i<arr.length;i++) {
        	if(arr[i].equals("")) {
        		answer += " ";
        	} else {
        		answer += arr[i].substring(0,1).toUpperCase();
        		answer += arr[i].substring(1).toLowerCase();
        		answer += " ";
        	}
        }
        
        if(s.lastIndexOf(" ")==s.length()-1) {
        	return answer;
        } else {
        	return answer.substring(0,answer.length()-1);
        }
    }
}
  1. String s의 문장을 s.split(" ") 공백 단위로 잘라 arr 배열에 담았다.
  2. arr[i]가 공백이면 answer에 " "를 추가, 문자라면 첫글자는 대문자로 나머지 글자는 소문자로 추가 후 공백을 더한다.
  3. 2번에서 answer 마지막에 공백이 무작위로 추가되는 것을 방지하기 위해 만약 s에서 공백의 마지막 순서==문장의 마지막이라면 그대로 리턴.
    아니라면 마지막 공백을 제외하고 answer을 0부터 공백 이전까지 잘라 리턴한다.



🧑🏻‍💻 다른 사람의 풀이

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;
  }
}
  1. s를 소문자 변환 후 쪼개어 배열 sp에 담았다.
  2. 삼항연산자를 이용해 첫글자는 대문자, 이후 공백이 없다면 flag를 false로 변경해 소문자로 추가한다.
    다음 문자가 공백이라면 flag는 true로 변경되어 공백 이후 첫글자는 대문자로 추가된다.



🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12951

0개의 댓글