View
프로그래머스 :: 이상한 문자 만들기 (Java) 알고리즘 /split (String regex, int limit) 정리
curioser 2021. 4. 24. 11:14
😃 || 정리
먼저 주어진 문자를 공백을 기준으로 잘라주기 위해 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
배열의 크기를 정할 수 있다는 것
두번째 매개변수에 숫자를 넣어서 크기를 정할 수 있다.
a. 0일때
0이면 우리가 흔히아는 형태로 잘라준다
b. 양수일 때
양수값이면 지정한 만큼의 크기로 배열을 형성해서 만들어 준다
c. 음수일때
음수값이면 모든 문자를 리턴해준다. 그래서 공백값도 나온다!
이번 문제에서는 뒤에 -1을 넣어서 공백이 들어갔을 때도 문자가 나오도록 해서 풀 수 있었다. 오늘도 하나 배웠군요
'Algorithm' 카테고리의 다른 글
LeetCode :: Valid Anagram (Java) (0) | 2021.04.30 |
---|---|
프로그래머스 :: 같은 숫자는 싫어 (Java) 알고리즘 풀이 (0) | 2021.04.26 |
LeetCode :: Happy Number (Java) (0) | 2021.03.06 |
프로그래머스 :: 카펫 (Java) 알고리즘 (0) | 2021.02.28 |
프로그래머스 :: 3진법 뒤집기 (Java) (0) | 2021.02.21 |
reply