1. 문제

2. 문제 해결 논리
1. 문제 이해
- 주어진 것
- String s // 임의의 문자열
 - 문자열을 이루는 단어들
 - 단어의 0번째 ~ 마지막까지 홀수 인덱스는 소문자
 - 단어의 0번째 ~ 마지막까지 짝수 인덱스는 대문자
 
 - 요구되는 것
- 주어진 문자열을 위의 제한 사항에 맞춰 변환 후 합친 문자열
 
 
2. 데이터 구조 결정
- StringBuilder, 반복문, 인덱스 사용
 
3. 알고리즘 설계
- StringBuilder를 이용한 문자열 수정
 - 반복문에서 사용할 인덱스와 따로 움직이는 인덱스의 사용
 - StringBuilder의 String 변환 및 반환
 
3. 코드 구현
class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        //문자열을 이루는 단어 내에서만 움직이는 인덱스
        int index = 0;
        //문자열 s 내 문자를 반복문으로 하나씩 순회
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            //해당 문자가 "공백"이라면
            if (c == ' ') {
                //인덱스 0으로 초기화 및 공백을 StringBuilder에 추가
                index = 0;
                sb.append(' ');
            //해당 문자가 "공백"이 아니라면
            } else {
                //해당 문자의 인덱스가 짝수라면
                if (index % 2 == 0) {
                    sb.append(Character.toUpperCase(c));
                //해당 문자의 인덱스가 홀수라면
                }else{
                    sb.append(Character.toLowerCase(c));
                }
                //변환 및 append 작업이 끝나면 인덱스+1
                index++;
            }
        }
        //StringBuilder에서 String으로 변환
        return sb.toString();
    }
}
* Reference
https://school.programmers.co.kr/learn/courses/30/lessons/12930
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반응형
    
    
    
  'PS > Programmers' 카테고리의 다른 글
| [level1, Arrays] 예산 (0) | 2023.03.25 | 
|---|---|
| [level1, Character] 시저 암호 (1) | 2023.03.24 | 
| [level1, 진법] 3진법 뒤집기 (0) | 2023.03.21 | 
| [level1, Stack/Queue] 같은 숫자는 싫어 (0) | 2023.03.20 | 
| [level1, 유클리드 호제법] 최대공약수와 최소공배수 (0) | 2023.03.19 |