본문 바로가기
개인 공부/TIL

[ TIL - PGS ] 99클럽 코테 스터디 4일차 TIL + 오늘의 학습 가이드

by 킴도비 2024. 7. 25.

💡 오늘의 학습 키워드

  • 문자열

 

✅ 오늘 공부한 내용

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

  • 오늘의 프로그래머스 문제! JadenCase 문자열 만들기

 

👀 오늘의 회고

🤣 오늘의 문제점

  • replace를 여러개 사용했다가 시간 초과로 실패를 했다.
더보기
import java.util.*;

class Solution {
    public String solution(String s) {
        // 제이든 케이스
        // 모든 단어의 첫문자는 대문자
        // 그외는 모두 소문자
        // 첫 문자가 알파벳이 아닐 때 이어지는 알파벳은 소문자
        
        s = s.replace(" ", "*");
        String[] so = s.split("\\*");
        String[] ss = s.split("\\*");
        
        //System.out.println(Arrays.toString(ss));
        
        for(int i = 0; i < ss.length; i++){
            ss[i] = (ss[i].charAt(0) + "").toUpperCase() + ss[i].substring(1, ss[i].length()).toLowerCase();
            s = s.replace(so[i], ss[i]);
            //System.out.println(s);
        }
        
        String answer = s.replace("*", " ");
        return answer;
    }
}

 

 

🔥 어떤 시도를 했는가?

  • 그 이후 메모리 초과 된 것을 해결 하기 위해 StringBuilder로 바꾸어 주었다.
  • 공백이 나올 시 boolean으로 값을 받아 첫번째 단어인지 확인해 주었다.
  • 대문자, 소문자 변환을 해주었다.

 

👏 무엇을 새로 알았는가?

  • StringBuilder 활용법
// StringBuilder 선언
StringBuilder sb = new StringBuilder();

// 문자 붙여 주기
sb.append(s.charAt(i));

// String으로 변환해서 저장해주기
String answer = sb.toString();

 

  • 대문자, 소문자 변환하기
// 대문자 변환
sb.append((s.charAt(i) + "").toUpperCase());

// 소문자 변환
sb.append((s.charAt(i) + "").toLowerCase());

 

  • split 사용 시 기호 사용 주의할 점
    • 풀다가 java.util.regex.PatternSyntaxException라는 오류가 생겼었다.
    • 알고보니 특수 문자를 split으로 자르려 하다가 생긴 오류였다.
    • 원인은 메타 문자로 들어가는 일부 특수문자 ?, *, (, ), [, ], {, }와 같은 문자들 때문이었다!
    • 해결법은 앞에 \\를 붙여주는 방법!
    • 그러면 문제 없이 돌아간다.
s = s.split("\\*");

 

 

  • 알고 있던 개념이지만 복습 기념으로 정리하기!

 

  • 그런데 다른 사람 풀이보기를 하니 더 간단하게 푸신 분들이 많았다.
    • 예를 들어 삼항 연산자를 이용한 변환이라던가..
    • 정규식 표현으로 구분한다던가..
  • 등의 깔끔한 풀이법들이 눈을 사로잡았다..! 나도 다음번에는 기필코 써봐야지 라고 생각했다 😙

 

 

👩‍💻 내일은 무엇을 학습할 것인가?

  • 내일은 항해 문제 풀고 til 적기
  • 프로그래머스 문제 마저 풀기
  • 밀린 책 읽기..
  • 원티드 강의 및 사전 미션 먼저 어떻게 해볼지 보기
  • 다음 주는 어떻게 계획하여 지낼지 미리 고민하기