프로그래머스/Lv. 1

[프로그래머스 코딩테스트] 이상한 문자 만들기(Java)

Sigfriede 2023. 6. 14. 01:00

  문제 설명

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

 

  제한사항

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

 

  입출력 예

s return
"try hello world" "TrY HeLlO WoRlD"
import java.lang.StringBuilder;
class Solution {
    public String solution(String s) {
        s = s.toLowerCase();
        StringBuilder sb = new StringBuilder(s);
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            if (sb.charAt(i) == ' ') {
                count = 0;
            } else if (count % 2 == 0) {
                sb.setCharAt(i, Character.toUpperCase(sb.charAt(i)));
                count++;
            } else {
                count++;
            }
        }
        String answer = sb.toString();
        return answer;
    }
}

  toLowerCase 메소드를 이용하여 문자열 s를 모두 소문자로 변경합니다.

  StringBuilder를 생성합니다.

  변수 count를 생성합니다. 이는 단어에서 짝수 번째 알파벳인지 홀수 번째 알파벳인지 구분하는 변수가 될 것입니다.

  for문이 s의 길이만큼 순회합니다.

  if문에서 sb의 i번째 문자가 공백이라면 count를 0으로 초기화합니다. 공백이 하나 이상 연속적으로 나오더라도 괜찮습니다.

  else if문에서 count를 2로 나눈 나머지가 0이라면, 즉 단어에서 짝수 번째 알파벳에 해당합니다. setCharAt 메소드와 toUpperCase 메소드를 이용하여 i번째 문자를 대문자로 변경합니다.

  앞선 조건에 해당하지 않는다면 문자는 공백이 아닌 홀수 번째 알파벳에 해당합니다. 앞서 문자열을 먼저 소문자로 변경해주었으므로 별도의 변경은 하지 않습니다. count를 증가시켜 다음 문자가 짝수 번째 알파벳이라는 것을 표시해야 합니다.

  반환하기 전 toString 메소드를 이용하여 StringBuilder의 문자열을 올바르게 반환할 수 있도록 합니다.