이상한 문자 만들기

이리·2025년 1월 17일
0
post-thumbnail

문제: https://school.programmers.co.kr/learn/courses/30/lessons/12930

문제설명

  • 주어진 파라미터: String s
  • 반환값: String
  • 문자열 s의 각 단어는 하나 이상의 공백문자로 구분되어있음
  • 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 return

풀이방식

  1. 단어별로 idx 설정 필요
  2. 이전 char가 공백이라면 idx 초기화
  3. idx 기준으로 홀/짝 구분해 대소문자 구분

코드

class Solution {
    public String solution(String s) {
        String answer = "";
        char beforeC = 'a';
        int idx = 0;
        
        for(int i = 0; i < s.length(); i++){
            
            if(i == 0){
                beforeC = 'a';
            }else{
                beforeC = s.charAt(i-1);
            }
            
            // 앞이 공백이면 idx 초기화
            if(s.charAt(i) == ' '){
                answer += " ";
                idx = 0;
                continue;
            }
            
            // idx 기준으로 대소문자 구분 
            if(idx % 2 == 0){
                if(s.charAt(i) >= 'A' && s.charAt(i) <= 'Z'){
                    answer += s.charAt(i);
                }else{
                    answer += (char)(s.charAt(i) - 32);
                }
            }else{
                if(s.charAt(i) >= 'a' && s.charAt(i) <= 'z'){
                    answer += s.charAt(i);
                }else{
                    answer += (char)(s.charAt(i) + 32);
                }
            }
            
            idx++;
        }
        
        return answer;
    }
}

회고

class Solution {
  public String solution(String s) {

        String answer = "";
        int cnt = 0;
        String[] array = s.split("");

        for(String ss : array) {
            cnt = ss.contains(" ") ? 0 : cnt + 1;
            answer += cnt%2 == 0 ? ss.toLowerCase() : ss.toUpperCase(); 
        }
      return answer;
  }
}

→ String을 .split(””)로 모두 String으로 나눠서 풀이한다면 좀 더 쉬운 방법이 됩니다.


살짝만 다르게 생각하는 실력을 기르도록!

0개의 댓글

관련 채용 정보