Algorithm/Programmers

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

ikjo 2022. 1. 19. 17:11

문제 설명

 

 

코딩테스트 연습 - 이상한 문자 만들기

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

programmers.co.kr

 

풀이 : Success

소스 코드

class Solution {
    public String solution(String s) {

        String[] d = s.split(" ", -1);

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < d.length; i++) {
            for(int j = 0; j < d[i].length(); j++) {
                if(j%2==0) {
                    if (d[i].charAt(j) >= 97) sb.append(String.valueOf(d[i].charAt(j)).toUpperCase());
                    else sb.append(d[i].charAt(j));
                } else {
                    if (d[i].charAt(j) <= 90) sb.append(String.valueOf(d[i].charAt(j)).toLowerCase());
                    else sb.append(d[i].charAt(j));
                }
            }
            if(i<d.length-1) sb.append(" ");
        }

        return sb.toString();
    }
}

 

풀이 회고

우선 문자열을 공백을 기준으로 구분시켜 문자열 배열에 저장시켰는데, split 두번째 인자에 -1을 준 이유는 split 하면서 후행 빈 값이 삭제되는 것을 방지하기 위함이다. 예를 들어 입력된 문자열이 "try hello world "라면 후행 빈 값을 포함시켜서 출력시켜주어야 하는데, 두번째 인자에 -1을 주지 않고 split 시행 시 후행 빈 값이 삭제되기 때문이다.

 

결과값 출력을 위해 StringBuilder 객체를 사용했고 문자열별로 짝수 인덱스 문자가 소문자면 대문자로 변환시켜 append 시켰고, 홀수 인덱스 문자가 대문자면 소문자로 변환시켜 append 시키도록 했다. 하나의 문자열에 대해 변환 작업이 끝나면 공백을 추가해주도록 했다.(마지막 문자열 제외)

 

 

참고자료

  • https://programmers.co.kr/learn/courses/30/lessons/12930