본문 바로가기
Coding Test/프로그래머스

[프로그래머스 자바 JAVA] 이상한 문자 만들기 (level 1)

by 똧이 2022. 3. 15.
반응형

https://programmers.co.kr/learn/courses/30/lessons/12930

 

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

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

programmers.co.kr

 

 

import java.util.Arrays;

class Solution {
    public String solution(String s) {
        String answer = "";

        int count = 0;
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) != ' '){
                if (count % 2 == 1) {
                    answer += Character.toLowerCase(s.charAt(i));
                } else {
                    answer += Character.toUpperCase(s.charAt(i));
                }
                count++;
            } else {
                answer += " ";
                count = 0;
            }
        }
        return answer;
    }
}

 

이번 문제는 한참을 풀어도 테스트 케이스에서 계속 실패해서 푸는데 한참 걸렸다.

여기서 주의해야 할 점은

a. 문제에서 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 라고 말한 부분이다. 즉 단어 사이에 공백이 두 개 이상일 수도 있다는 것과

https://programmers.co.kr/questions/25920

b. 이 경우이다.

 

풀이

1. int count를 선언해준다(이유는 문자열 상의 문자의 인덱스를 구하기 위해(짝, 홀 판단을 위해))

2. 문자열 s의 길이만큼 for문을 돌리는데 해당 인덱스의 문자가 공백일 경우와 아닐 경우를 나눠서 판단해주어야 한다.
   2-1. 공백이 아닐 경우: count에 따라 짝, 홀을 판단해 대문자나 소문자로 바꿔준다. 바꿔주고 나서 count++해주기
   2-2. 공백일 경우: 반환할 답에 공백을 추가해주고 count를 0으로 초기화시킨다.(이유: 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.)

728x90

댓글