
오늘의 회고
- 오늘의 문제
- 오늘의 문제는 함정이 좀 있었다.
문제를 잘 읽고 코드를 짜기 전,
문제가 원하는 내용을 반드시 정리하고 생각부터 해야 한다.
오늘 문제는 함정만 잘 걸러내면 쉬운 문제라고 생각한다.
풀이에 걸린 시간은 22분 정도 걸렸다.
- 처음에 좀 헤맸지만,
다시 한번 문제를 생각하고 함정을 발견하니 쉬웠다.
- 시도했던 방법
import java.util.*;
class Solution {
public String solution(String s) {
/*
1. 처음이 숫자인 경우, 아닌 경우...
처음 생각난 방법 : 1. 공백 기준 문자열 나누기
2. 모든 문자열 소문자화 시키기
3. 각 문자열 첫번째만 대문자화 시키기
4. 다시 합치기
마지막에 생각한 방법 : 1. 기존 문자열을 훼손하지 않고 split하기
2. 첫 글자는 무조건 Upper(숫자도 Upper해도 오류 안남)
3. 두번째 글자부턴 앞에 공백이 있는지 판단
4. 공백이라면 Upper
주의 사항 1. 한개의 글자로 이루어져 있을 수 있음.
2. 숫자가 여러번 존재할 수 있음.
3. 공백문자가 여러 개인 경우, 원본을 유지해야 하기에 없어지면 안됨.
*/
String[] sArray = s.toLowerCase().split("");
for(int i = 0; i < sArray.length; i++){
if(i == 0){
sArray[i] = sArray[i].toUpperCase();
continue;
}
if(sArray[i - 1].equals(" ")){
sArray[i] = sArray[i].toUpperCase();
}
}
return String.join("", sArray);
}
}
- 주석은 길지만 코드는 생각보단 간결하다.
처음 문제를 풀 땐,
무작정 split(" ")을 통해 나누고, 어떻게든 첫 글자를 Upper 시켜서 어찌어찌 테스트는 통과했다.
하지만, 계속 제출하니 무수한 에러들이 나왔고,
조금씩 바꿨지만 나아지는 것은 없었다.
그래서 다시한번 조건을 생각해보았고,
'공백 문자가 연속해서 나올 수 있습니다.' 이 부분이 눈에 들어왔다.
나는 split(" ")을 해버렸으니 원본이 날라가버린것...
그렇다면
'전 자리가 공백인 것 다음만 바꾸면 되잖아..?!' 라고 생각이 딱 들었고,
코드를 작성했다.
- 방법 -
1. 문자열을 원본 그대로 한글자씩 나누기
2. 첫글자는 공백이던 숫자던 영어던 그냥 Upper 시키기
3. 2번째 글자부턴 앞에 공백인지 아닌지를 판단해주기
4. 다시 합치기
- 새롭게 알게된 내용
1. toUpperCase()는 문자열이면 공백,숫자,문자던 실행 가능한것 같다.
2. 공백도 문자다.
- 내일 학습할 내용
1. Character 클래스에 대해서 공부하기
2. 무작정 코드 입력하는 습관 버리기
'코딩테스트 - Java' 카테고리의 다른 글
99클럽 코테 스터디 11일차 TIL + 오늘의 학습 키워드 : 포인터 (0) | 2024.08.01 |
---|---|
99클럽 코테 스터디 6일차 TIL + 오늘의 학습 키워드 : 경우의수 (0) | 2024.07.27 |
99클럽 코테 스터디 5일차 TIL + 오늘의 학습 키워드 : Arrays.sort() (0) | 2024.07.26 |
99클럽 코테 스터디 3일차 TIL + 오늘의 학습 키워드 : Arrays.sort() (3) | 2024.07.24 |
99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드 : 등차수열 (0) | 2024.07.23 |
안녕하세요. 성장하고 싶은 개발자 orElse입니다. 지켜봐주세요.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!