[프로그래머스] Lv.2 JadenCase 문자열 만들기 (java)

노리·2023년 5월 19일
0

알고리즘

목록 보기
9/34

2023.02.15 Complete !

🔈 문제 설명

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

✅ 제한 조건

  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.

📝 입출력 예

sreturn
"3people unFollowed me""3people Unfollowed Me"
"for the last week""For The Last Week"

💛 내가 쓴 풀이

class Solution {
    public String solution(String s) {
        String answer = "";
		String[] str = s.toLowerCase().split(" ");
		
		for(int i=0; i<str.length; i++) {
			if(str[i].length() == 0) {
				answer+=str[i]+" ";
			}else {
				answer+=str[i].substring(0, 1).toUpperCase()+str[i].substring(1)+" ";	
			}
			
			System.out.println(answer);
		}
		
		if(s.charAt(s.length()-1) != ' ') {
			answer = answer.trim();	
		}
        return answer;
    }
}

😥 고려하지 못했던 점

  • 공백이 연달아서 나올 수 있다.
  • 원래 문장의 맨 마지막이 스페이스로 끝날 수 있다.

👉🏼 위를 고려하여 코드를 고치고 나서도 계속해서 오류가 나서 아래처럼 str[i] 자체를 고쳐주는게 아닌 문자열에 붙이는 형식으로 수정하니 완료되었음.

if(str[i].length() == 0) {
				str[i] = str[i]+" ";
			}
			str[i] = str[i].toLowerCase();
			str[i] = str[i].substring(0, 1).toUpperCase()+str[i].substring(1);

💬 남이 쓴 풀이

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

→ 삼항 연산자로 풀이하니 훨씬 더 깔끔하게 나온듯 하다.
여전히 오늘도 한번 더 배워간다 👍

profile
놀이터

0개의 댓글