[Java] 프로그래머스 Lv2_JadenCase 문자열 만들기
Categories: Programmers
Tags: CodingTest, 실습
📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]
[Java] 프로그래머스 Lv2_JadenCase 문자열 만들기
첫 번째 시도 : 테스트 8 만 실패
문자는 jadencase로 만들어야 하기 때문에 문자의 첫 글자만 대문자로 만들고 나머지는 소문자이어야 한다.
그래서 문장을 띄어쓰기로 다 분리하고 , 첫 글자만 대문자로 나머지 글자는 소문자로 변경하여 이어 붙이면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution {
public String solution(String s) {
StringBuilder answer = new StringBuilder();
String[] strArr = s.split(" ");
for (String str : strArr) {
// 문자가 공백이 아니라면
if(!str.isEmpty()) {
char c = str.charAt(0);
// 첫 글자가 문자라면 대문자로 변경한 후 추가
if(Character.isLetter(c)) {
answer.append(Character.toUpperCase(c));
} else {
answer.append(c);
}
//첫글자가 아니라면 소문자로 추가
answer.append(str.substring(1).toLowerCase());
}
//기존 공백 추가
answer.append(" ");
}
return answer.toString().substring(0, answer.length()-1);
}
}
- 무난하게 통과할 것 같았는데 8번만 실패함…
문제의 유의사항을 다시 읽어보니 공백이 여러 개 있을 수 있다는 점이 신경 쓰였다. 따라서 공백 처리에 문제가 있을 가능성이 있다고 생각했다.
특히 마지막 문자가 공백일 경우, 기존 코드가 공백을 임의로 제거해버리는 문제가 있는 것 같아서 이 부분을 먼저 수정해보기로 했다.. JadenCase 변환에서는 원래 문자열의 공백을 유지해야 한다.
두 번째 시도
그래서 마지막 for문 후에 조건문을 추가하여 원래 문장에서 마지막이 공백일 때는 바로 return 하고
아닐 경우에는 마지막 공백을 제거해 주었다,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public String solution(String s) {
/* ...
생략
...
*/
//기존 문자에 공백이 있다면 공백 제거 없이 바로 반환
if(s.substring(s.length() -1, s.length()).equals(" ")) return answer.toString();
//기존 문자에 공백이 없ㄱ다면 공백 제거 후 반환
return answer.toString().substring(0, answer.length()-1);
}
}
공백 문제를 처음에 인지 못해서 꽤 시간이 소요되었는데 정답률 높다고 만만하게 봐서 그런가, 아직 갈 길이 멀었다고 생각이 들었다.
매일 열심히 풀어야지🤲
Leave a comment