View


😃 || 정리

 먼저 주어진 문자를 공백을 기준으로 잘라주기 위해 split method를 사용해서 단어별로 나누었다.

그리고 한 단어를 다시 split method를 이용해서 알파벳으로 나눈 후 

짝수번째 수는 대문자로 , 홀수번째 수는 소문자가 되도록 
toLowerCase()와 toUpperCase()를 이용하기로 했다.

😃 || 풀이 방법

import java.util.*;

class Solution {
  public String solution(String s) {
      String[] word = s.split(" ",-1);
      int wordLen = word.length;
      StringBuilder sb = new StringBuilder();
      
      for(int i=0; i < wordLen ; i++){
          String[] alp = word[i].split("");
          int alpLen = alp.length;
          
          for(int j=0; j < alpLen ; j++){
              if(j%2 == 0){
                  sb.append(alp[j].toUpperCase());
              } else {
                  sb.append(alp[j].toLowerCase());
              }
          }
          if(i != (wordLen-1)){
              sb.append(" ");
          }
      }
      
      return sb.toString();
  }
}

분명 테스트케이스를 실행하면 잘 되는데
제출 하니 70프로만 통과되었다.
문득 뇌를 스치는 것이 설마 공백 들어오는 단어들이 있으면
오류가 나는 건가? 싶었다.

원인은 split 함수에 대한 이해도가 부족했던 것~

😃 || 공부하기

split 함수에 대해 찾다보니 다음과 같은 함수를 발견할 수 있었다

" String split(String regex, int limit) "

   🎈 String regex

정규식을 이용해서 해당 문자를 잘라서 배열로 만들어준다.
그래서 . 으로는 split을 자를 수 없다고 한다. 정규식에서 .은 예약어이기 때문에 ( "\\.")을 써주어야한다. 

   🎈 int limit

참고한 StackOverFlow 글

배열의 크기를 정할 수 있다는 것
두번째 매개변수에 숫자를 넣어서 크기를 정할 수 있다. 

a. 0일때

 0이면 우리가 흔히아는 형태로 잘라준다

b. 양수일 때

 양수값이면 지정한 만큼의 크기로 배열을 형성해서 만들어 준다

c. 음수일때

음수값이면 모든 문자를 리턴해준다. 그래서 공백값도 나온다!

이번 문제에서는 뒤에 -1을 넣어서 공백이 들어갔을 때도 문자가 나오도록 해서 풀 수 있었다. 오늘도 하나 배웠군요

Share Link
reply
«   2024/10   »
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