알고리즘 공부/프로그래머스

(Java)프로그래머스 코딩테스트 연습 - 연습문제 - JadenCase 문자열 만들기

HRuler 2020. 12. 13. 22:32

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/12951?language=java

 

코딩테스트 연습 - JadenCase 문자열 만들기

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건

programmers.co.kr

2. 나의 풀이

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
		s = s.toLowerCase();
		//System.out.println("s(모두 소문자) : " + s);
		ArrayList<String> arr = new ArrayList<>();
		String str = "";
		for(int i = 0; i < s.length(); i = i + 1) {
			if(s.charAt(i) == ' ') {
				if(s.charAt(i - 1) == ' ') {
					arr.add(" ");
				}else {
					arr.add(str);
					arr.add(" ");
					str = "";
				}
			}else {
				str += s.substring(i, i + 1);
			}
			if(i == s.length() - 1 && s.charAt(i) != ' ') {
				arr.add(str);
			}
			//System.out.println("s.charAt(" + i + ") : " + s.charAt(i) + ", arr : " + arr);
		}
		//System.out.println("arr : " + arr);
		
		for(int i = 0; i < arr.size(); i = i + 1) {
			//System.out.println((int)arr.get(i).charAt(0));
			if(97 <= (int)arr.get(i).charAt(0) && 122 >= (int)arr.get(i).charAt(0)) {
				answer += arr.get(i).substring(0, 1).toUpperCase() + arr.get(i).substring(1, arr.get(i).length());
			}else {
				answer += arr.get(i);
			}
		}
		
		return answer;
    }
}

3. 다른 사람 풀이

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