[JAVA] 이상한 문자 만들기

NoHae·2025년 2월 5일
0

문제 출처

코딩테스트 연습 > 연습문제 > 이상한 문자 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/12930

문제 설명

한 개 이상 단어로 구성된 문자열 s가 주어 질 때, 각 단어의 짝수번재 위치는 대문자, 홀수번째 알파벳은 소문자로 바꾼 문자열을 return하라.

접근 방법

문자열에서 각 단어를 split 하여 각 단어를 순회하며 짝수 index는 대문자, 홀수 index는 소문자로 변경한다. 그리고 변경 후엔 StringBuilder 에 append 한다.
한 단어가 끝난 뒤에는 원래 상태를 유지하기 위해 공백 문자를 더해준다.(맨 마지막을 제외하기 위해 w < words.length - 1 조건 추가)

import java.util.*;

class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        String[] words = s.split(" ", -1); // 연속된 공백 유지

        for (int w = 0; w < words.length; w++) {
            for (int i = 0; i < words[w].length(); i++) {
                if (i % 2 == 0) {
                    sb.append(Character.toUpperCase(words[w].charAt(i)));
                } else {
                    sb.append(Character.toLowerCase(words[w].charAt(i)));
                }
            }

            // 마지막 단어 뒤에는 공백 추가 X
            if (w < words.length - 1) {
                sb.append(" ");
            }
        }
        return sb.toString();
    }
}

Review
공백 문자를 만날 때 마다 index를 초기화할 수 있다.

class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        int index = 0;
        for(int i =0; i<s.length(); i++){
            char c = s.charAt(i);
            
            if(c == ' '){
                sb.append(c);
                index = 0;
            }else{
                if(index%2 == 0){
                    sb.append(Character.toUpperCase(c));
                }else{
                sb.append(Character.toLowerCase(c));
            }
                index++;
        }
        }
        return sb.toString();
    }
}

알게된 점

공백 유지를 위해 split에선 split(" ", -1) 처럼 -1을 넣어야한다.

String.toUpperCase 뿐만 아니라
Character.toUpperCase 도 있다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글