➰ 취업준비/알고리즘 문제풀이

[C++][프로그래머스] level 1 - 이상한 문자 만들기

 사과개발자 2020. 7. 23. 12:30

문제 설명

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

제한 조건

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

입출력 예

s return
"try hello world" "TrY HeLlO WoRlD"

 

입출력 예 설명

try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로

바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD 를 리턴합니다.

 

CODE

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    string answer = "";
    answer = s;
    int ch=0;
    
    for( int i = 0 ; i < answer.length() ; i++ ){
        if (answer[i]==' ') {
            ch=0;
            continue;
        }
        
        if ( ch % 2 == 0) {
            if (answer[i]>= 'a' && answer[i] <= 'z')
                answer[i] = answer[i]-'a'+'A';
        }
        else {
            if (answer[i]>= 'A' && answer[i] <= 'Z')
                answer[i] = answer[i]-'A'+'a';
        }
        ch++;
    }
    
    return answer;
}

+코드설명

ch라는 변수를 사용하여 해당 단어가 짝수번째인지 홀수번째인지를 확인한다

  1. ch 를 0으로 초기화

  2-1. 공백일 경우 

      3. ch를 0으로 초기화해주어 새로운 단어가 시작됨을 명시한다

  2-2. 공백이 아닐 경우 

     3. 짝수번째 알파벳이라면 소문자  →  대문자로 변경 후 ch++  

          홀수번째 알파벳이라면 대문자  →  소문자로 변경 후 ch++  

 

필요한 개념  & 문제 요구사항

+유의사항

모두 소문자이거나 모두 대문자인 상황이 아니므로   

짝수/홀수에 따라 직접  소 →대 / 대 → 소를 변경해주어야 한다

+출처

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

 

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

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

programmers.co.kr

 

반응형