12930 이상한 문자 만들기

알파로그·2023년 3월 12일
0

✏️ 문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다.
각 단어는 하나 이상의 공백문자로 구분되어 있습니다.

각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

✏️ 제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

✏️ 문제 풀이

📍 1차 시도 - 실패

루프문 외에 별도의 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);
    }
}

📍 2차 시도 - 실패

방금 전 내용을 조금 더 명확하게 풀었다.

이번엔 모든 체점이 실패했다..

어떤게 문제일까..

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
    }
}

📍 3차 시도 - 성공

아무리 고민해봐도 반례를 찾을 수 없어서 구글링을 했다.

알고보니 매개변수로 제공되는 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;
    }
}
profile
잘못된 내용 PR 환영

0개의 댓글