하루에 한 문제

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

알고리즘/프로그래머스

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

dkwjdi 2020. 12. 17. 21:31

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

 

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

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

programmers.co.kr

class Solution {
	    public String solution(String s) {
	        String answer = "";
	        
	        String []str=s.toLowerCase().split(" ");
	        
	        for(int i=0; i<str.length; i++) {
	        	String str2=str[i];
	        	if(str2.equals("")) {
	        		answer+=" ";
	        		continue;
	        	}
	        	char ch=str2.charAt(0);
	        	if(!((ch<'a' ||ch>'z') && (ch<'A' || ch>'Z'))) {
	        		String head=str2.substring(0,1).toUpperCase();
	        		String body=str2.substring(1);
	        		answer+=head+body;
	        	}
	        	else answer+=str2;
	        	
	        	answer+=" ";
	        }
	        int answerlen=answer.length();
	        int slen=s.length();
	        
	        if(answerlen-1 < slen ) {
	        	for(int i=0; i<=s.length()-answer.length(); i++) {
	        		answer+=" ";
	        	}
	        }
	        return answer.substring(0, answer.length()-1);
	    }
	}

소요시간 : 40분

 

예외사항을 찾는데 시간이 오래걸렸습니다....

 

우선 로직을 살펴보면

1. 입력받은 s를 소문자로 바꾸고 공백마다 나누어서 str배열에 저장한다

2.  str배열만큼 포문을 돈다.

2-1 만약 str이 공백이라면 answer에 공백을 추가해준다.

2-2 공백은 아니지만 맨 처음문자가 영어가 아닐 시 str을 answer에 더해준다.

2-3 1, 2 에 해당안될 시 str의 첫문자를 대문자로 바꿔주고 answer에 더해준다.

 

생각못한 예외사항 : 만약 abc^^^^  ( ^ : 공백 ) 처럼 뒷부분에 공백이 오는것을 처리하지 못함.

 

이 예외사항을 처리하기 위해 s의 길이와 answer의 길이를 비교해서 s가 더 길다면 그만큼 answer뒤에 공백을 추가해서 해결했습니다!

 

 

 

Comments