본문 바로가기
c++/프로그래머스

[프로그래머스] 코드 처리하기(c++)

by ilp 2024. 1. 31.
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181932

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr



#include <string>
#include <vector>

using namespace std;

string solution(string code) {
    string answer = "";
    int mode=0;
    for(int i=0;i<code.size();i++){
        if(mode==0){
            if(code[i]!='1'&&i%2==0){
                answer.push_back(code[i]);
            }
            else if(code[i]=='1'){
                mode=1;
            }
        }
        else if(mode==1){
            if(code[i]!='1'&&i%2!=0){
                answer.push_back(code[i]);
            }
            else if(code[i]=='1'){
                mode=0;
            }
        }
    }
    
    if(answer.empty()==true){
        answer="EMPTY";
    }
    return answer;
}
1. 변수
  • 'answer': 최종적으로 반환할 문자열을 저장할 변수이다. (초기값은 빈 문자열이다.)
  • 'mode': 현재 모드를 나타내는 변수이다. 0또는 1의 값을 가질수 있다. (초기값은 0이다.)

2. 메인 for문

  • 입력된 문자열 'code'의 각 문자를 순차적으로 탐색한다.
  • 'i'는 0부터 'code.size()'까지 증가한다.

3. mode에 따른 처리

  • 'mode'가 0일떄 ( 'mode == 0' )
    • 만약 현재 문자가 '1'이 아니고, 인덱스가 짝수이면 ( code[i] != '1' && i % 2 == 0 )
      해당 문자를 'answer'에 추가한다.
    • 만약 현재 문자가 '1'이면 ( code[i] == '1' )
      모드를 1로 전환한다..
  • 'mode'가 1일떄 ( 'mode == 1' )
    • 만약 현재 문자가 '1'이 아니고, 인덱스가 홀수이면 ( code[i] != '1' && i % 2 != 0 )
      해당 문자를 'answer'에 추가한다.
    • 만약 현재 문자가 '1'이면 ( code[i] == '1' )
      모드를 0으로 전환한다..

4. 결과 확인 /  반환

  • 만약 'answer' 문자열이 비어 있다면 ( answer.empty() == true )
    'EMPTY' 를 반환한다.
  • 그렇지 않으면 만들어진 'answer' 문자열을 반환한다.

 

 

참고

'empty' 함수

  • 문자열이 비어있는지 확인한다.
  • 문자열이 비어있으면 'true'를, 그렇지 않으면 'false'를 반환한다.
if(str.empty()==true)
if(str.empty()==false)

- 이 코드는 문자열 'str'이 비어있는지 확인한다. 문자열이 비어있으면 if문 내부의 코드를 실행한다.

- 이 코드는 문자열 'str'이 비어있는지않은지 확인한다.


반응형