PROGRAMMERS/연습문제

PROGRAMMERES Level 1 연습문제 이상한 문자 만들기 (JAVA 자바)

c0mmedes 2022. 8. 25. 17:14
import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        String arr[] = s.split(" ", -1);
       
        for(int i=0; i<arr.length; i++){
            for(int j=0; j<arr[i].length(); j++){
                if(j==0 || j%2==0){
                    String a = Character.toString(arr[i].charAt(j));
                    a = a.toUpperCase();
                    answer += a; 
                } else {
                    String a = Character.toString(arr[i].charAt(j));
                    a = a.toLowerCase();
                    answer += a; 
                }
            }
            if(i==arr.length-1) continue;
            answer += " ";
        }

        return answer;
    }
}

 

 

다른 코드

class Solution {
    public String solution(String s) {
        String answer = "";
        
        // split을 이용하여 쪼개서 배열에 넣는다.
        String[] arr = s.split("");
        
        // 인덱스 초기화
        int idx = 0;
        
        for(int i=0; i<arr.length; i++) {
            // 공백일 경우는 인덱스를 다시 0으로
            if(arr[i].equals(" ")) {
                idx = 0;
            // 인덱스가 짝수일 경우 대문자로 바꿔주고 인덱스++
            } else if(idx % 2 == 0) {
                arr[i] = arr[i].toUpperCase();
                idx++;
            // 인덱스가 홀수일 경우 소문자로 바꿔주고 인덱스++
            } else if(idx % 2 != 0) {
                arr[i] = arr[i].toLowerCase();
                idx++;
            }
            
            // answer에 바꿔진 문자나 공백을 넣어줌
            answer += arr[i];
        } 
        
        return answer;
    }
}

 

 

 

더 간결하게

class Solution {
  public String solution(String s) {

        String answer = "";
        String[] arr = s.split("");

        int idx = 0;
      
        for(String str : arr) {    
            // answer에 idx가 짝수면 대문자로, 아니면 소문자로 
            answer += idx%2 == 0 ? str.toUpperCase() : str.toLowerCase(); 
            // 공백일 경우 인덱스를 0으로 아니면 +1        
            idx = str.contains(" ") ? 0 : idx + 1;
        }
      
        return answer;
  }
}