[알고리즘과 자료구조] JAVA - 이상한 문자 만들기

문제 설명

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


제한 사항

문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.

첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.


문제풀이

- 실패한 소스

  1. import java.util.*;
  2. class Solution {
  3. public String solution(String s) {
  4. String[] sArr = s.split(" ");
  5. StringBuffer sb = new StringBuffer();
  6. for( int i = 0; i < sArr.length; i++ ){
  7. char[] cArr = sArr[i].toCharArray();
  8. for ( int j = 0; j < cArr.length; j++ ){
  9. sb.append ( j % 2 == 0 ? Character.toString( cArr[j] ).toUpperCase() : Character.toString( cArr[j] ).toLowerCase() );
  10. }
  11. if( i < sArr.length-1 ) {
  12. sb.append ( " " );
  13. }
  14. }
  15. return sb.toString();
  16. }
  17. }


- 수정된 소스

  1. import java.util.*;
  2. class Solution {
  3. public String solution(String s) {
  4. String[] sArr = s.split("");
  5. int cnt = 0;
  6. StringBuffer sb = new StringBuffer();
  7. for( int i = 0; i < sArr.length; i++ ){
  8. if( sArr[i].equals(" ") ){
  9. cnt = 0; // 다음 단어값은 0으로 시작되기 때문에 space 값에서 초기화
  10. sb.append( " " );
  11. } else if( cnt % 2 == 0 ){
  12. // 짝수일 경우
  13. cnt++;
  14. sb.append ( sArr[i].toUpperCase() );
  15. } else {
  16. // 홀수일 경우
  17. cnt++;
  18. sb.append ( sArr[i].toLowerCase() );
  19. }
  20. }
  21. return sb.toString();
  22. }
  23. }


* 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
작성자 소개
초이 프로필
WrapUp 블로거

초이

반려견을 좋아하고, 차를 좋아하고, 여행을 좋아하고, 맛집을 찾아 즐기는 웹 개발자 입니다^^