정말 간단한 문제인줄 알았는데 아니었다 🙄
class Solution {
public String solution(String s) {
String answer = "";
int cnt = 0;
String[] array = s.split("");
for(String ss : array) {
cnt = ss.contains(" ") ? 0 : cnt + 1;
answer += cnt%2 == 0 ? ss.toLowerCase() : ss.toUpperCase();
}
return answer;
}
}
정말 똑똑해..!!
이 사람은
문자열을 배열로 모두 분해해서
배열의 인덱스를 모두 순회하며
단어만의 인덱스를 계산할 cnt 변수를 만들어 사용하였고
단어에서 짝수번째 인덱스엔 toLowerCase() 를, 홀수번째 인덱스에는 toUpperCase()를 사용해주었다.
class Solution {
public String solution(String s) {
String answer = "";
s = s.toLowerCase();
int beforeSpace = -1;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' ' || i == s.length() - 1) {
int afterSpace = i;
int idx = 0;
for (int j = beforeSpace + 1; j <= afterSpace; j++) {
if (s.charAt(j) == ' ' || idx % 2 != 0) answer += s.charAt(j);
else answer += (char)(s.charAt(j) - ('a' - 'A'));
idx++;
}
beforeSpace = afterSpace;
}
}
return answer;
}
}
숨겨진 테스트에서
대소문자가 섞여있는 단어들과 어쩌면 공백만 있는 단어가 있을 수도 있음을 알아챈 후
작성해본 코드였다...
다른사람 코드가 훨씬 간결하고 읽기 좋고 실행시간도 훨씬 짧았다.
오늘도 많이 배워갑니다 🤓
처음 풀어본 날짜 : 23.03.26 ~ 28