티스토리 뷰
[프로그래머스] JadenCase 문자열 만들기 isUpperCase(), toUpperCase(), toLowerCase()
징짱짱 2025. 11. 4. 08:12코테 공부를 다시 시작했다..
프로그래머스에서 2단계 문제부터 차근차근 풀어보고자 한다. 파이팅..!
JadenCase 문자열 만들기라는 문제는 문자열의 대소문자를 구분하고 이를 조건에 맞게 바꿔줘야 한다.
주로 사용되는 함수는 대소문자 여부 확인과 변경시켜주는 함수.
Character.isUpperCase(charArr[0]);
charArr[0]이 대문자인지 확인하는 함수다.
true/false로 반환되며 대문자일 경우 true, 그 외에는(int, 특수문자 포함) false로 반환된다.
소문자인지 확인하고 싶다면
Character.isLowerCase()
charArr[0]을 대문자로 변경하고 싶다면
Character.toUpperCase(charArr[0]);
를 사용하면 된다. 소문자는 대문자로 변경시켜주고, int나 특수문자는 그대로 둔다.
소문자 또한 마찬가지로
Character.toLowerCase();를 사용하면 된다.
후에 나올 함수지만
Character.isLetter(charArr[0]);
이건 charArr[0]가 문자인지 확인하는 함수이다. 문자라면 true를, 아니라면 false를 반환한다.
처음 생각한 거는
1. 문자열을 공백을 기준으로 나누고
2. 0번째 오는 문자열이 대문자인지 확인 후
2-1. 대문자가 아니라면 대문자로 변경
3. 그 뒤에 오는 문자는 다 소문자로 변경
class Solution {
public String solution(String s) {
String answer = "";
String[] str = s.split(" ");
for(int i = 0; i < str.length; i++){
char[] charArr = str[i].toCharArray();
if(!Character.isUpperCase(charArr[0])) //첫 번째 문자 대문자 여부 확인
charArr[0] = Character.toUpperCase(charArr[0]);
for(int j = 1 ; j < charArr.length; j++){ //그 다음으로 오는 문자 소문자로 변경
charArr[j] = Character.toLowerCase(charArr[j]);
}
str[i] = new String(charArr);
if(i < str.length -1 ){
answer += str[i] + " ";
}else{
answer += str[i]; // 마지막일 경우 공백 x
}
}
return answer;
}
}
이었다. 테스트케이스는 성공했지만 제출하고 보니 런타임 오류가 발생했다.
이유는 제한 조건인 "공백 문자가 연속해서 나올 수 있습니다." ..ㅠ
연속해서 공백이 오는 경우 str[i]에 빈 문자열이 들어가 StringIndexOutOfBoundsException가 발생하는 것이었다.
하여 연속해서 공백이 들어오는 경우도 포함하여 알고리즘을 다시 짜기 시작했다.
1. 첫 문자 판별을 위해 boolean을 하나 만들어주고
2. 공백을 기준으로 나누지 않고 처음부터 char[]로 바꾼 뒤
3. ch[0]가 공백이라면 다음에 오는 글자는 첫 문자라고 판별 start를 true로 바꿔준다.
3-1. 첫 문자이고, 문자라면 대문자로 변경
(처음에는 대문자 여부로 확인했었지만 숫자면 변환되는 것이 없어 문자인지 판별하고 바꾸는 게 더 나을 것이라고 생각했다.)
3-2. 그 외에는 모두 소문자로 변경
4. start false로 바꿔주기
class Solution {
public String solution(String s) {
boolean start = true;
char[] ch = s.toCharArray();
for(int i=0;i<ch.length;i++){
if(ch[i] == ' '){
start = true;
}else{
if(start && Character.isLetter(ch[i])){
ch[i] = Character.toUpperCase(ch[i]);
}else{
ch[i] = Character.toLowerCase(ch[i]);
}
start = false;
}
}
return new String(ch);
}
}
다행이 런타임 오류 없이 성공했다.
'공부하기 > 코딩테스트' 카테고리의 다른 글
| [프로그래머스] 카펫 (0) | 2025.11.11 |
|---|---|
| [프로그래머스] 피보나치 수 (0) | 2025.11.11 |
| [프로그래머스] 짝지어 제거하기 (stack) (0) | 2025.11.06 |
| [프로그래머스] 다음 큰 숫자 (0) | 2025.11.06 |
| [프로그래머스] 이진 변환 하기 (0) | 2025.11.04 |
- Total
- Today
- Yesterday
- vscode+kotlin
- 미래내일일경험
- 자바대소문자변경
- 개린이
- 인턴
- 멋쟁이사자처럼안드로이드6기
- 안드로이드
- 깃허브
- BoundService
- github
- githubreadme
- 라디오버튼
- readme
- 멋쟁이사자처럼6기안드로이드
- 리드미
- 자바대소문자여부
- toast
- jadencase
- androidstudio
- 라디오그룹
- onclicklistener
- 대소문자변경
- vscode
- 안드로이드스튜디오 #윈도우사용자추가 #코틀린 #인프런코틀린강의
- 미래내일일경험인턴
- setOnClickListener
- it직무
- 프로그래머스
- 자바
- kotlin
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |
