코딩테스트/프로그래머스

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

GAEBAL 2022. 9. 15. 19:07
728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이

엄청 쉬운 문제인 줄 알았는데 처음에 런타임에러로 틀렸음 ㅠㅠㅠ

 

private static class Solution {
    private String solution(String s) {
        StringBuilder sb = new StringBuilder();
        String[] strArr = s.split(" ");

        for (int i = 0 ; i < strArr.length ; i++) {
            strArr[i] = strArr[i].trim();
            sb.append(strArr[i].substring(0, 1).toUpperCase())
                    .append(strArr[i].substring(1, strArr[i].length()).toLowerCase())
                    .append(" ");
        }

        sb.setLength(sb.length() - 1);

        return sb.toString();
    }
}

처음엔 이렇게 문자열을 나눠서 문자열 함수들을 사용해서 했는데 런타임에러가 났음

 

그래서 문자열에서 인덱스를 이동해가면서 하나하나씩 비교해가며 JadenCase 문자열로 만들어줬음 !

 

자세한건 주석으로 !

 

 

코드

// 코딩테스트 연습 - 연습문제 - JadenCase 문자열 만들기
// https://school.programmers.co.kr/learn/courses/30/lessons/12951

package PROGRAMMERS.level2;

public class Num12951_JadenCase문자열만들기 {
    private static class Solution {
        private String solution(String s) {
            StringBuilder sb = new StringBuilder();
            
            // 첫번째 문자는 대문자로
            sb.append((s.charAt(0) + "").toUpperCase());

            // i는 1부터 시작
            for (int i = 1; i < s.length(); i++) {
                String str = s.charAt(i) + "";

                if (str == " ") { // 공백이면
                    sb.append(str); // 걍 붙임
                } else if (s.charAt(i - 1) == ' ') { // 전에 있던 문자가 공백이면
                    sb.append(str.toUpperCase()); // 대문자로 바꾸기
                } else { // 전에 있던 문자가 공백이 아니면
                    sb.append(str.toLowerCase()); // 소문자로 바꾸기
                }
            }

            return sb.toString();

            // String[] str = s.split(" ");
            // return String.join(" ", str);
            // 얘네 때문인지는 모르겠는데 계속 런타임 에러나네요 ㅠ
            // 그래서 다른 방법으로 풀었습니다
        }
    }

    public static void main(String[] args) {
        Solution sol = new Solution();

        System.out.println(sol.solution("3people unFollowed me"));
        System.out.println(sol.solution("for the last week"));
    }
}
728x90