반응형
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로 전환한다..
- 만약 현재 문자가 '1'이 아니고, 인덱스가 짝수이면 ( code[i] != '1' && i % 2 == 0 )
- 'mode'가 1일떄 ( 'mode == 1' )
- 만약 현재 문자가 '1'이 아니고, 인덱스가 홀수이면 ( code[i] != '1' && i % 2 != 0 )
해당 문자를 'answer'에 추가한다. - 만약 현재 문자가 '1'이면 ( code[i] == '1' )
모드를 0으로 전환한다..
- 만약 현재 문자가 '1'이 아니고, 인덱스가 홀수이면 ( code[i] != '1' && i % 2 != 0 )
4. 결과 확인 / 반환
- 만약 'answer' 문자열이 비어 있다면 ( answer.empty() == true )
'EMPTY' 를 반환한다. - 그렇지 않으면 만들어진 'answer' 문자열을 반환한다.
참고
'empty' 함수
- 문자열이 비어있는지 확인한다.
- 문자열이 비어있으면 'true'를, 그렇지 않으면 'false'를 반환한다.
if(str.empty()==true)
if(str.empty()==false)
- 이 코드는 문자열 'str'이 비어있는지 확인한다. 문자열이 비어있으면 if문 내부의 코드를 실행한다.
- 이 코드는 문자열 'str'이 비어있는지않은지 확인한다.
끝
반응형
'c++ > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 0 떼기(c++) (0) | 2024.01.31 |
---|---|
[프로그래머스] 정사각형으로 만들기(c++) (2) | 2024.01.31 |
[프로그래머스] 접미사 배열(c++) (0) | 2024.01.28 |
[프로그래머스] 접미사인지 확인하기(c++) (2) | 2024.01.28 |
[프로그래머스] 접두사인지 확인하기(c++) (2) | 2024.01.27 |