이상한 문자 만들기

HeeSeong·2021년 7월 26일
0

프로그래머스

목록 보기
85/97
post-thumbnail

🔗 문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12930?language=java


❔ 문제 설명


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


⚠️ 제한사항


  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.

  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.



💡 풀이 (언어 : Java)


케이스에서 "heLLo WoRLd " 같은 케이스가 있는지 몰라서 자꾸 실패했다. split(" ")은 뒤의 공백들을 지워버리고 [hello, world] 이런 결과 값을 준다. split(" ", -1)을 해주면 길이가 0인 문자열도 배열의 원소로 포함한다. [hello, world, , , , ]

public class Solution {
    public String solution(String s) {
        // -1 포함하면 길이가 0인 문자열도 무시하지 않고 포함
        String[] arr = s.split(" ", -1);
        StringBuilder sb = new StringBuilder();
        for (String word : arr) {
            for (int i = 0; i < word.length(); i++) {
                if (i % 2 == 0)
                    sb.append((Character.isLowerCase(word.charAt(i))) ? (char) (word.charAt(i) - 32) : word.charAt(i));
                else
                    sb.append((Character.isUpperCase(word.charAt(i))) ? (char) (word.charAt(i) + 32) : word.charAt(i));
            }
            // 단어 사이에 공백 넣기
            sb.append(" ");
        }
        // 마지막 단어 뒤에도 " " 공백 붙어있어서 제거해주기
        return sb.deleteCharAt(sb.length()-1).toString();
    }
}
profile
끊임없이 성장하고 싶은 개발자

0개의 댓글