💡 코테
프로그래머스(JadenCase 문자열 만들기)
MNY
2024. 4. 14. 23:13
728x90
반응형
💡 오늘의 학습 키워드
- 프로그래머스
* JadenCase 문자열 만들기 : 미들러 문제(Level 2)
오늘의 회고
문제1 : [JadenCase 문자열 만들기]
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
문자열을 입력받아 단어의 첫 글자는 대문자 나머지는 소문자로 만드는 문제였다.
공백은 한 번에 여러 번 입력가능하고, 숫자는 변환하지 않아야 한다.
오늘은 미들러 문제치고는 너무 쉬웠다. 전에 비슷한 문제를 풀이해봐서 그런가..?
일단 문자열의 첫 글자가 소문자일 경우 대문자로 변경해주고 아닐 경우는 그대로 넣어준다.
그리고 문자열의 두 번째 글자부터 문자열의 끝까지 반복문을 돌면서 아래와 같은 조건대로 변경해서 넣어준다.
- 해당 인덱스 앞이 공백일 경우 + 소문자일 경우는 대문자로 변경
- 해당 인덱스 앞이 공백이 아닐 경우 + 대문자일 경우는 소문자로 변경
- 나머지는 그대로
그러면 문제 해결!
아.. 그런데 첫 번째 시도에서는 'a' > str > 'z' 이런식?으로 해서
b부터 y까지만 소문자로 인식해서 첫 제출에 실수가 있었다. 물론 대문자도 비슷하게 실수했다....
- 어떻게 해결했는지
class Solution {
public String solution(String s) {
int len = s.length();
StringBuilder sb = new StringBuilder();
if(s.charAt(0) >= 'a' && s.charAt(0) <= 'z')
sb.append((char)(s.charAt(0) - 'a' + 'A'));
else
sb.append(s.charAt(0));
for (int i = 1; i<len; i++) {
if (s.charAt(i-1) == ' ' && s.charAt(i) >= 'a' && s.charAt(i) <= 'z')
sb.append((char)(s.charAt(i) - 'a' + 'A')); // 단어의 첫 영어글자 대문자로..
else if (s.charAt(i-1) != ' ' && s.charAt(i) >= 'A' && s.charAt(i) <= 'Z')
sb.append((char)(s.charAt(i) - 'A' + 'a')); // 단어의 뒷 영어글자 소문자로..
else
sb.append(s.charAt(i)); // 나머지는 그대로..
}
String answer = sb.toString();
return answer;
}
}
- 무엇을 새롭게 알았는지
오늘은 문제가 생각보다 쉬웠다. 코드를 다 타이핑해서 걸린 시간만 들었기에 블로그 작성이 더 걸리는 것 같다.
다른 사람들의 풀이를 보면서 삼항 연산자를 사용하거나 대소문자 변경 함수를 사용하시는 분이 많았다.
다음 번에는 삼항 연산자를 사용하거나 대소문자 변경 함수에 대해 정리 좀 해볼까 한다.
내일 학습할 것은 무엇인지 (최대 3개)
- 정보처리기사 실기
- 자바 형변환 정리
- 클럽99 코딩테스트(미들러)
728x90
반응형