알고리즘/프로그래머스
[프로그래머스] JadenCase 문자열 만들기(Java) 풀이 및 해설
승민아
2025. 1. 25. 22:16
https://school.programmers.co.kr/learn/courses/30/lessons/12951#
문제 풀이
문자열을 돌며 다음 조건문을 만들어 체크한다.
"대문자인 경우"
1. 대문자가 그대로 오는 경우 - 앞 문자가 공백이거나 문자열의 시작 위치인 인덱스 0이라면.
2. 소문자로 변환해야하는 경우 - 앞 문자가 공백이 아닌경우
"소문자인데 대문자로 변환해야하는 경우"
1. 소문자인데 문자열 시작 위치 인덱스 0 이거나 앞에 공백인 경우
"그 외 문자 그대로 출력"
테스트 케이스 8번이 틀리는 경우 다음 경우를 생각해보자.
공백의 문자가 연속으로 나오는 경우가 존재한다.
공백이 3개인 " " 입력의 경우 빈문자열이 아닌 " " 공백 3개가 포함된 문자열을 반환해야한다.
전체 코드
class Solution {
public String solution(String s) {
String answer = "";
// " " -> " "
for(int i=0; i<s.length(); i++) {
if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') { // 대문자인 경우
if (i == 0 || s.charAt(i-1) == ' ') { // 대문자가 그대로 와도 되는 경우 - 앞 문자가 공백이거나 인덱스 0인 경우
answer += s.charAt(i);
} else if (s.charAt(i-1) != ' ') { // 소문자로 와야하는 경우 - 앞에 공백이 아닌 경우
answer += (char)(s.charAt(i) - 'A' + 'a');
}
} else if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z' && ( i == 0 || s.charAt(i-1) == ' ')) {
// 소문자인데 앞의 문자가 공백이거나 첫문자라면 대문자로 변환
answer += (char)(s.charAt(i) - 'a' + 'A');
} else { // 그 외에는 문자 그대로
answer += s.charAt(i);
}
}
return answer;
}
}