본문 바로가기

알고리즘

[프로그래머스] 이상한 문자 [Java]

반응형

출처 : programmers.co.kr/learn/courses/30/lessons/12930

 

코딩테스트 연습 - 이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을

programmers.co.kr

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

입출력 예

s                                                                             return

try hello world TrY HeLlO WoRlD

입출력 예 설명

try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD 를 리턴합니다.

배운 내용

  • String Builder의 유연함 
    StringBuilder sb = new StringBuilder();
    sb.append() ; // 문자열 추가
  • sb.toString(); // 마지막에 문자열 모두 스트링으로 변환하기
  • char형 대소문자 변환 메소드
  • Character.toLowerCase(s.charAt(i)) 
  • Character.toUpperCase(s.charAt(i))
  • 문자열 대문자 변환 메소드
  • s.toUpperCase();

StringBuilder 코드

class Solution {
  public String solution(String s) {
        int index = 0;
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                sb.append(' ');
                index = 0;
            } else {
                if(index % 2 != 0) {
                    sb.append(Character.toLowerCase(s.charAt(i)));
                    index ++;
                } else {
                    sb.append(Character.toUpperCase(s.charAt(i)));
                    index ++;
                }
            }
        }

        return sb.toString();
  }
}

 스트링 빌더 사용하지 않은 코드

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

 배운 점

  • 문자열 처리할 때, String " 배열 " 로 관리하면 편한듯 
  • 1) 모든 문자 str에 저장
  • 2) str[i].equals(space) 공백 비교 ! 
반응형