프로그래머스 - 이상한 문자 만들기

Lee·2022년 1월 18일
0

알고리즘

목록 보기
6/24

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항

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

내가 쓴 코드

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] sentence = s.split("");
        
        int cnt = 0; // 문자의 진행순서를 알수 있는 카운터
        for (int i = 0; i < sentence.length; i++) {
            if (sentence[i].equals(" ")) {
                cnt = 0; // 공백을 찾았을 경우 카운터 초기화
            } else {
                if (cnt%2 == 0) { //짝수번째에서 문자를 찾았을 경우 대문자로 변경
                    sentence[i] = sentence[i].toUpperCase();
                    cnt++;
                } else { // 홀수번째에서 문자를 찾았을 경우 대문자로 변경
                    sentence[i] = sentence[i].toLowerCase();
                    cnt++;
                }
            }
        }
        return String.join("",sentence);
    }
}

정리

단어와 공백을 구분할 수 있는 카운터 설정
split을 이용해 배열로 분할
반복문을 이용해 문자열의 길이만큼 반복
조건문을 이용해 i번째 값이 공백이면 카운터 초기화
아닐경우 다시 조건문을 이용해 짝수번째와 홀수번째를 구분
짝수번째일 경우 대문자로 변경하고 카운터 증가
홀수번째일 경우 소문자로 변경하고 카운터 증가
join을 사용해 하나의 문자열로 합친다.

알파벳과 공백만 있는 것으로 보아 아스키코드를 이용하는 것이 더 좋을 것 같다는 생각이 든다.
문제 자체는 toUpperCase(), toLowerCase() 메서드만 안다면 문제가 없는 문제라고 생각한다.

profile
발전하고 싶은 백엔드 개발자

0개의 댓글