프로그래머스_JadenCase 문자열 만들기

임정민·2023년 5월 22일
1

알고리즘 문제풀이

목록 보기
45/173
post-thumbnail

코딩테스트 대비 프로그래머스 UI로 문제풀이 시도해보았습니다. 백준 UI랑 조금 달라서 쉬운 문제부터 풀어보았습니다.

문제

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

[나의 풀이1]

class Solution {
    
    static String Jaden(String s){
        
        String [] jadenArray = new String [s.length()];
        jadenArray = s.split(" ");
        
        String jaden = "";
        String first = "";
        
        System.out.println(jadenArray[0].length()-1);
        
            for(int i=0;i<jadenArray.length;i++){
                first = String.valueOf(jadenArray[i].charAt(0));
                jaden = jaden + first.toUpperCase() + jadenArray[i].substring(1,jadenArray[i].length()).toLowerCase();
                if (i!=jadenArray.length-1){
                    jaden += " ";
                }
                
            }
        
        
        return jaden;
    }
    
    public String solution(String s) {
        
        String jaden = Jaden(s);
        
        return jaden;
    }
}

입력값 String s 를 띄어쓰기 기준으로 split하여 배열에 저장한뒤 배열 각 인덱스의 첫번째 문자는 대문자로 그 이후 문자들은 substring 메서드를 활용하여 소문자로 바꾸어 연산하였습니다. 하지만 이 풀이는 시간초과가 발생하여 좀 더 빠른 코드로 수정하였습니다.🏃🏃🏃

[나의 풀이2]

class Solution {
    
    static String Jaden(String s){
                
        String jaden = "";
        Boolean nextToBlank = true;
        
        for(int i=0;i<s.length();i++){
            
            if(String.valueOf(s.charAt(i)).equals(" ")){
                nextToBlank = true;
                jaden += s.charAt(i);
                continue;
            }
            else if (nextToBlank){
                jaden += String.valueOf(s.charAt(i)).toUpperCase();
            }
            else{
                jaden += String.valueOf(s.charAt(i)).toLowerCase();
            }
            nextToBlank = false;
        }
        
        
        return jaden;
    }
    
    public String solution(String s) {
        
        String answer = Jaden(s);
        
        return answer;
    }
}

위와 같이 입력값 String s 문자열을 순차적으로 돌며 띄어쓰기이면 스킵하고 띄어쓰기 바로 뒤 문자는 대문자로, 나머지 문자들은 소문자로 바꾸는 조건문을 통해 해결하였습니다.🐕🐕🐕

간단한 문제임에도 불구하고 여러 메서드들의 문법을 검색하는 과정 때문에 시간이 걸렸습니다. Java가 아니라 Python 이라면 좀 더 간단하게 구현되어 있는 형변환, 슬라이싱 등을 통해 훨씬 빠르게 풀 수 있을 거라고 생각합니다. 오늘 기점으로 코딩테스트 언어를 Python으로 바꾸어 준비하겠습니다.😭😭😭

감사합니다.

profile
https://github.com/min731

0개의 댓글