class Solution {
public String solution(String s) {
String answer = "";
String[] arr = s.split(" ", -1);
// split 메소드 인자값 -1 을 넣으면 공백도 문자열로 인식
// 공백을 기준으로 arr 배열에 s 넣기
int cnt = 1;
for (int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length(); j++) {
if(j%2 == 0) {
answer += arr[i].substring(j, j+1).toUpperCase();
//배열에 담긴 값들 짝수번째 대문자 변환
} else {
answer += arr[i].substring(j, j+1).toLowerCase();
//배열에 담긴 값들 홀수번째 소문자 변환
}
}
if(cnt != arr.length) {
//배열 값들 사이 공백 넣어주기 ex) 길이가 3이면 그사이 공백은 2개이고 3개가 됐을때 if문 종료
answer += " ";
cnt++;
}
}
return answer;
}
}
위 그림은 각 배열의 값과 길이를 차례대로 출력했다. abc와 abc 사이에는 공백이 3개이지만 배열에 들어가는 값은 2개인 것을 알 수 있다
.
* 배운 점
split()에 -1 의 인자값을 주면 공백도 배열로 인식한다는 것을 배웠다. 자체적으로 테스트 케이스 사이에 문자열 사이에 공백이 2개 이상 들어갔을 때를 넣어서 실행했는데 -1 안들어가니까 인식을 못했다
String (Java SE 11 & JDK 11 )
Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum
docs.oracle.com
왜 -1 을 넣으면 공백도 배열로 인식하는 걸까? API를 찾아보니
If the limit is negative then the pattern will be applied as many times as possible and the array can have any length
대충 해석해보면 만약 limit가 음수인 경우 배열은 가능한 많이 적용되고 어떤 길이도 가질 수 있다고 되어있었다.
그럼 -2 를 넣어도 적용이 될까? 블로그를 뒤져보면 다 -1 만 설명해놓고 이유도 적어 놓지 않았다
4-2 를 넣어도 똑같은 실행 값이 나온다!!! 혹시 몰라 -3, -4 다 넣어봤다
즉 -1 만 인식하는게 아니라 음수값을 넣으면 되는 것이다!
이걸 몰라서 실행해보니 테스트 케이스 중에 1개만 안되서 정말 몇시간 내내 삽질하면서 찾아 다녔는데 그래도 풀어서 뿌듯하다
'개발 공부 > 알고리즘' 카테고리의 다른 글
프로그래머스 '네트워크' 자바 (0) | 2023.04.18 |
---|---|
프로그래머스 '게임 맵 최단거리' 자바 (0) | 2023.04.18 |
프로그래머스 '체육복' 자바 (0) | 2023.04.13 |
<programmers> 약수의 개수와 덧셈 자바 (0) | 2022.09.27 |
<programmers> 정수 내림차순으로 배치하기 - 자바 (0) | 2022.09.06 |