Coding Test/프로그래머스

[프로그래머스] JadenCase 문자열 만들기도움말 - 자바

lsh2613 2023. 8. 8. 17:09

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

 

프로그래머스

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

programmers.co.kr

문제풀이

아스키코드로 원하는 대소문자에 맞게 연산을 수행해도 되지만 이미 Character에 구현되어 있으니 가져와서 조건에 맞게 사용하기만 하면 된다.

숫자 문자에 대해서는 toUpper, toLower 해도 변화없으니 예외처리 없이 쉽게 구현 가능하다.

 

잘못된 접근

너무 쉬워서 대충 읽고 바로 풀었더니 8번 테스트 케이스에서 실패했다.

다시 읽어보니 빈문자열이 연속으로 나올 수 있다.

처음 작성한 코드는 ' '를 기준으로 토큰화해서 풀었기 때문에 연속된 빈 문자열에 대해 처리가 불가능했다.

 

잘못된 코드

import java.util.*;
class Solution {
    public String solution(String s) {
        String answer = "";
        StringBuilder sb=new StringBuilder();
        
        String[] tokens = s.split(" ");
        for(String str : tokens){
            for(int i=0;i<str.length(); i++){
                if(i==0)
                    sb.append(Character.toUpperCase(str.charAt(i)));
                else
                    sb.append(Character.toLowerCase(str.charAt(i)));
            }
            sb.append(" ");
        }
        sb.deleteCharAt(sb.length()-1);
        
        return sb.toString(); 
    }
}

 

코드

import java.util.*;
class Solution {
    public String solution(String s) {
        String answer = "";
        StringBuilder sb=new StringBuilder();
        
        for(int i=0; i<s.length(); i++){
            if(i>1 && s.charAt(i-1)==' ' || i==0)
                sb.append(Character.toUpperCase(s.charAt(i)));
            else
                sb.append(Character.toLowerCase(s.charAt(i)));
        }
        
        return sb.toString();
    }
}

 

느낀점

쉬워도 자세히 읽고 풀자