하루에 한 문제
[프로그래머스] JadenCase 문자열 만들기 -Java 본문
https://programmers.co.kr/learn/courses/30/lessons/12951
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뒤에 공백을 추가해서 해결했습니다!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 다음 큰 숫자 -Java (0) | 2020.12.18 |
---|---|
[프로그래머스] 섬 연결하기 -Java (1) | 2020.12.18 |
[프로그래머스 2017팁스타운]예상 대진표 -Java (0) | 2020.12.17 |
[프로그래머스] 최솟값 만들기 -Java (0) | 2020.12.17 |
[프로그래머스 Summer/Winter Coding] 영어 끝말잇기 -Java (0) | 2020.12.17 |
Comments