본문 바로가기
코딩테스트 연습

Programmers 이상한 문자 만들기 Level 1

by 동배_ 2021. 9. 5.

문제 설명

https://programmers.co.kr/learn/courses/30/lessons/12930?language=java 

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

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

문제 해석 및 풀이 방법

1. 매개변수로 받은 String 크기 만큼 for문을 돌린다

2. 그리고 인덱스를 따로 변수로 두고 String의 문자를 하나 씩 땐다.

3. 그리고 문자를 index값이 짝수면 소문자 홀수면 대문자를 바꾼다

4. 정답을 반환한다.

 

내가 작성한 소스코드(Java)

class Solution {
    public StringBuilder solution(String s) {
        StringBuilder answer = new StringBuilder(s);
        int index = 0;
        for(int i=0;i < s.length();i++){
            if(s.charAt(i) == ' '){
                index = 0;
                continue;
            }
            if(index % 2 == 1)
                answer.setCharAt(i,Character.toLowerCase(s.charAt(i)));
            else if(index % 2 == 0)
                answer.setCharAt(i,Character.toUpperCase(s.charAt(i)));
            index++;
        }
        return answer;
    }
}

매개변수 s를 수정을 편하게 하기위해 answer에 넣는다.

그리고 index변수를 추가한다. 그 이유는 단어 별로 인덱스의 짝홀 수를 봐야하기 떄문이다.

 

그리고 문자열에서 문자를 차례대로 하나씩 charAt으로 뽑은 다음 공백이면 index를 초기화 

아니면 짝수인지 홀수인지 판별하고 짝수면 toUpperCase로 대문자 홀수면 toLowerCase로 소문자로 바꾼다.

 

그리고 index를 1추가해주고 이 과정을 반복한 후 answer을 리턴한다. 

결론 및 고찰

문제를 제대로 읽어보지 않은 나머지 시간이 조금 더 소요됐다. 공백까지 index를 포함시켜 버려서 i를 통해서 

서 인덱스의 짝홀수를 판단 했었고, 잘못된 것을 파악 후 index라는 변수를 통해 문제를 해결했다.

 

소요 시간 15

댓글