문자열 s는 한 개 이상의 단어로 구성되어 있습니다.
각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
루프문 외에 별도의 int 변수 j
를 만들어 각 단어 내부의 자리수의 홀짝을 판단하게 했다.
j
는 공백이 나올경우 초기화 되도록 설정했다.
체점 결과 1문제를 제외하고 모든 문제가 실패했다..
이유가 뭐지..
class Solution {
public String solution(String s) {
char[] chars = s.toCharArray();
int j = 1;
for (int i = 0; i < s.length(); i++) {
if (chars[i] == ' ') j = 0;
else if (j % 2 != 0) chars[i] = Character.toUpperCase(chars[i]);
j++;
}
return new String(chars);
}
}
방금 전 내용을 조금 더 명확하게 풀었다.
이번엔 모든 체점이 실패했다..
어떤게 문제일까..
class Solution {
public String solution(String s) {
String answer = "";
cint count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' '){
answer += " ";
count = 0;
continue;
}
if (count % 2 == 0) {
answer += (char) (s.charAt(i) - 32);
count++;
}else {
answer += s.charAt(i);
count++;
}
}
return answer
}
}
아무리 고민해봐도 반례를 찾을 수 없어서 구글링을 했다.
알고보니 매개변수로 제공되는 String 에도 대문자가 존재한다고 한다..
제한 사항에도 안쓰여있고, 예시에도 소문자 밖에 없어서 생각지도 못했다.
매개변수를 소문자로 바꾸는 코드 한줄을 추가해 문제를 해결할 수 있었다.
class Solution {
public String solution(String s) {
String answer = "";
s = s.toLowerCase();
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' '){
answer += " ";
count = 0;
continue;
}
if (count % 2 == 0) {
answer += (char) (s.charAt(i) - 32);
count++;
}else {
answer += s.charAt(i);
count++;
}
}
return answer;
}
}