반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- ai controller
- Summer/Winter Coding
- netmode
- Unreal Engine
- 로컬 네트워크 연결
- 프로젝트
- Algorithm
- 프로그래머스
- 2018 kakao
- enetrole
- timelessadventure
- 코딩테스트
- fabrik ik
- C++
- issac3d
- unrealengine
- fruitspuzzle
- 2022 kakao
- 최대값과 최솟값
- c#
- 구현
- unity
- pcce 기출문제
- pccp 기출문제
- 리플렉션 시스템
- network model
- 당구 연습
- gameinstancesubsystem
- 2019 kakao
- 백준
Archives
- Today
- Total
LeeTaes 공부노트
[프로그래머스/C++ 문제 풀이] Lv. 0 - 코드 처리하기 본문
728x90
반응형
문제 설명
문자열 code가 주어집니다.
code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다.
mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다.
- mode가 0일 때
- code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.
- code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다.
- mode가 1일 때
- code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.
- code[idx]가 "1"이면 mode를 1에서 0으로 바꿉니다.
문자열 code를 통해 만들어진 문자열 ret를 return 하는 solution 함수를 완성해 주세요.
단, 시작할 때 mode는 0이며, return 하려는 ret가 만약 빈 문자열이라면 대신 "EMPTY"를 return 합니다.
제한 사항
- 1 ≤ code의 길이 ≤ 100,000
- code는 알파벳 소문자 또는 "1"로 이루어진 문자열입니다.
입출력 예
code | result |
"abc1abc1abc" | "acbac" |
입출력 예 #1
- code의 각 인덱스 i에 따라 다음과 같이 mode와 ret가 변합니다.
i | code[i] | mode | ret |
1 | "b" | 0 | "a" |
2 | "c" | 0 | "ac" |
3 | "1" | 1 | "ac" |
4 | "a" | 1 | "ac" |
5 | "b" | 1 | "acb" |
6 | "c" | 1 | "acb" |
7 | "1" | 0 | "acb" |
8 | "a" | 0 | "acba" |
9 | "b" | 0 | "acba" |
10 | "c" | 0 | "acbac" |
0 | "a" | 0 | "a" |
따라서 "acbac"를 return 합니다.
문제 풀이
이번 문제는 문자열을 차례대로 읽어가며 특정 문자(1)가 나오는 경우 흐름을 전환해줘야 하는 문자열 관련 문제입니다.
간단히 모든 code를 순회하며 code[i]가 1인 경우 mode를 변환하고, mode에 따른 처리를 통해 문제를 해결하였습니다.
1차 시도에서는 빈 문자열일 때 "EMPTY"를 출력해주는 것을 처리해주지 않아서 오답을 받게 되었습니다.
쉬운 문제여도 끝까지 읽어야 겠다는 생각을 하게 되었던 문제였습니다.
정답 코드
더보기
#include <string>
#include <vector>
using namespace std;
string solution(string code) {
string answer = "";
int mode = 0;
for (int i = 0; i < code.length(); i++)
{
if (code[i] == '1')
{
mode = (mode + 1) % 2;
continue;
}
if ((mode == 0 && i % 2 == 0) || (mode == 1 && i % 2 == 1))
{
answer += code[i];
}
}
if (answer.empty())
answer = "EMPTY";
return answer;
}
728x90
반응형
'코딩테스트 > 프로그래머스 (Lv. 0)' 카테고리의 다른 글
[프로그래머스/C++ 문제 풀이] Lv. 0 - 다항식 더하기 (0) | 2024.07.01 |
---|---|
[프로그래머스/C++ 문제 풀이] Lv. 0 - 배열 만들기 2 (0) | 2024.07.01 |
[프로그래머스/C++ 문제 풀이] Lv. 0 - 배열 조각하기 (0) | 2024.06.30 |
[프로그래머스/C++ 문제 풀이] Lv. 0 - 최빈값 구하기 (0) | 2024.06.29 |
[프로그래머스/C++ 문제 풀이] Lv. 0 - OX퀴즈 (0) | 2024.06.29 |