본문 바로가기

코딩테스트 연습(with java)/프로그래머스

프로그래머스<이상한 문자 만들기>

6월 26일에 올렸던 <이상한 문자 만들기> 문제가 완벽하게 통과되지 않았고, 그 대안책으로 LowerCase를 사용하여 풀어보겠다고 생각하였다. 

class Solution {
    public String solution(String s) {
        StringBuffer sb = new StringBuffer();
        String answer = "";
        String[] array = s.split(" ");
        for(int i=0; i<array.length; i++){
            String[] array2 = array[i].split("");
            for(int j =0; j<array2.length; j++){
                if(j%2==0){
                    sb.append(array2[j].toUpperCase());
                }
                else{
                    sb.append(array2[j].toLowerCase());
                }

            }
            sb.append(" ");
        }

        return sb.toString();
    }
}

전보다는 점수가 훨씬 높았지만, 100점은 절대로 나오지 않았다. 아마 문제가 공백이 여러개 일 수 있다는 것인거 같은데,, 그걸 어떻게 처리해야할지 한번 더 고민해봐야겠다. 

 

 

정답코드)

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

 

정답과 비교하였을 때, 나의 실수는 문자열을 먼저 ""로 나누지 않은 것이다.

""로 먼저 나누어야, 여러 공백을 만났을 때, 인덱스 값을 초기화하여 그냥 공백처리를 할 수 있기 때문이다. 

디테일한 부분까지 조금 더 생각할 수 있는 사고력이 필요할 것 같다 .