알고리즘/프로그래머스

[211218][220103] 이상한 문자 만들기*(/)

감자탈출기 2021. 12. 18. 20:07

 

시간 정말 오래 걸렸고 테스트 케이스는 통과하는데 채점하면 fail 다수. 

import java.util.*;
class Solution {
    public String solution(String s) {
    	String answer = "";
    	String[] arr = s.split(" ");
    	String[] newArr = new String[arr.length];
		String var = "";
    	for(int i = 0; i < arr.length; i++) {
    		StringBuilder sb = new StringBuilder("");
    		newArr[i] = arr[i].trim();
    		for(int j = 0; j < newArr[i].length(); j++) {	
    			if(j%2 == 0) {
	    			var = String.valueOf(newArr[i].charAt(j)).toUpperCase();
	    			System.out.println("짝수" + var);
	    		} else if(j%2 == 1){
	    			var = String.valueOf(newArr[i].charAt(j)).toLowerCase();
	    			System.out.println("홀수" + var);
	    		}
    			sb.append(var);
    		}
    		newArr[i] = String.valueOf(sb);
			s = s.replace(newArr[i].toLowerCase(), newArr[i]);
			answer = s;
		}
        return answer;
    }
}

리뷰 : 자바에서 split()은 후행 공백을 처리해주지 않는다.

따라서 String.split(" ") 가 아닌 split("") 으로 문자 하나하나 잘라서 처리해 주어야 함.

 

풀이

idx 이해하느라 힘들었음 

문자열 비교 equals()

import java.util.*;
class Solution {
    public String solution(String s) {
        String answer = "";
    	String[] arr = s.split("");
    	int idx = 0;
    	for(int i = 0; i < arr.length; i++) {
    		if(arr[i].equals(" ")) {
    			idx = 0;
    			arr[i] = " ";
    		} else {
    			if(idx%2 == 0) {
    				arr[i] = arr[i].toUpperCase();
    			} else {
    				arr[i] = arr[i].toLowerCase();
    			}
    			idx++;
    		}
    	}
    	answer = String.join("", arr);
        return answer;
    }
}

 


[220103] 오래 걸렸지만 idx 이해 함

import java.util.*;
class Solution {
    public String solution(String s) {
       StringBuffer sb = new StringBuffer();
        String[] sArr = s.split("");
        int idx = 0;
        for(String str : sArr){
            if(!str.equals(" ")){
                if(idx%2 == 0){
                    sb.append(str.toUpperCase());
                } else if(idx%2 == 1){
                    sb.append(str.toLowerCase());
                }
                idx++;
             } else if(str.equals(" ")) {
                sb.append(str);
                idx = 0;
            }
        }
        return sb.toString();
    }
}