본문 바로가기
Java/알고리즘

[프로그래머스/알고리즘] 이상한 문자 만들기 (자바/Java)

by 전재경 2022. 11. 21.

문제 설명

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

 

제한 사항

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

 

입출력 예 설명

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

 

 

Step1. 문제분석 

split으로 공백을 기준으로 문자열을 나누고,

띄어쓰기마다 인덱스를 초기화 해야하므로 idx 변수를 만들어주고 for문을 생성

toUpperCase / toLowerCase는 소문자를 대문자로 / 대문자를 소문자로 만들어주는 함수

 

그렇게 홀수, 짝수 일때 비교해서 대소문자를 나누고 return 한다.

 

Step2. 문제풀이 코드

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

 

Step3. 다른 사람의 풀이 코드

삼항연산를 활용하여 대문자,소문자도 바로 나눠줬다.

신기하다 모르는 부분이 참 많아 많이 배운다.

class Solution {
  public String solution(String s) {

        String answer = "";
        int cnt = 0;
        String[] array = s.split("");

        for(String ss : array) {
            cnt = ss.contains(" ") ? 0 : cnt + 1;
            answer += cnt%2 == 0 ? ss.toLowerCase() : ss.toUpperCase(); 
        }
      return answer;
  }
}

 

 

댓글