프로그래머스

99클럽 코테 스터디 17일차 TIL JadenCase 문자열 만들기 - 자바Java

리콜 2024. 4. 14. 23:52

 

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

 

프로그래머스

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

programmers.co.kr

 

처음 봤을때 문제가 너무 쉬워 보였다.

LowerCase랑 UpperCase를 사용하면 쉽게 해결 될 것 같았다.

하지만 무슨 문제인지 대부분의 케이스가 실패로 떳다.

 

 

 

 

import java.util.*;
class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(s, " ", true);
        
        while(st.hasMoreTokens()){
            String str = st.nextToken();
            if(str.equals(" ")){
                sb.append(str);
            }else{
                String first = str.substring(0,1);
                String upperFirst = first.toUpperCase(); //첫번째 문자 대문자로 
                str = str.toLowerCase();
                str = str.replaceFirst(first, upperFirst);
                sb.append(str);
            }
            
            
        }
        
        String answer = sb.toString();
        return answer;
    }
}

 

 

 

문제의 원인을 찾지는 못하였다. 

코드를 수정하면서 substirng으로 바꾸었는데 해결이 됐다.

 

replaceFirst가 문제인가 하여 replace로 바꾸어 보아도 실패라고 떳다...

첫번째 글자가 여러번 나타날 수 있어 replaceFirst를 쓰는게 맞아 보이는데

아무래도 예상치 못한 케이스가 있는것같다.

 

최종 코드

import java.util.*;
class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(s, " ", true);
        
        while(st.hasMoreTokens()){
            String str = st.nextToken();
            if(str.equals(" ")){
                sb.append(str);
            }else{
                str = str.toLowerCase();
                sb.append(str.substring(0,1).toUpperCase() + str.substring(1));
            }
            
            
        }
        
        String answer = sb.toString();
        return answer;
    }
}

 

반응형