Notice
Tags
- study
- Python
- Kubernetes
- cloud_computing
- Image_classification
- Artificial_Intelligence
- 자격증
- Android
- 2023_1st_Semester
- c++
- Operating_System
- kubeflow
- SingleProject
- 오블완
- 티스토리챌린지
- C
- tensorflow
- Algorithm
- datastructure
- Unix_System
- Personal_Study
- app
- Univ._Study
- codingTest
- 리눅스마스터2급
- Linux
- Baekjoon
- programmers
- Java
- Database_Design
코딩 기록 저장소
[프로그래머스/C++] 문자열 나누기 본문
문제 정보
제목 : 문자열 나누기
난이도 : Lv.1
사용 언어 : C++
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/140108
문제 설명
문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다.
- 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다.
- 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.
- s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다.
- 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다.
문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요.
제한 사항
- 1 ≤ s의 길이 ≤ 10,000
- s는 영어 소문자로만 이루어져 있습니다.
입출력 예
s | result |
"banana" | 3 |
"abracadabra" | 6 |
"aaabbaccccabba" | 3 |
입출력 예 설명
입출력 예 #1
s="banana"인 경우 ba - na - na와 같이 분해됩니다.
입출력 예 #2
s="abracadabra"인 경우 ab - ra - ca - da - br - a와 같이 분해됩니다.
입출력 예 #3
s="aaabbaccccabba"인 경우 aaabbacc - ccab - ba와 같이 분해됩니다.
나의 풀이
첫 글자를 읽을 문자열인 first_s, 각 글자를 비교하여 카운트할 변수 f,d를 선언합니다. 문자열 s의 길이만큼 반복하면서 first_s 문자열이 비어있는 상태라면 s[i] 문자열을 저장한 후 continue합니다. 그리고 만약 s[i]번째 문자열이 first_s와 같다면 f변수에 1을 증가, 같지 않다면 d변수에 1을 증가 시킵니다. 그리고 만약 두 변수의 카운트가 같아진다면 answer 변수에 1을 증가 시킨 후, f,d변수는 0으로 바꾸고 first_s도 비어있는 상태로 바꿔줍니다. 반복이 끝나면 answer을 리턴합니다.
코드
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
int f=0,d=0;
string first_s="";
for(int i = 0 ; i < s.size(); i++)
{
if(first_s == "")
{
first_s = to_string(s[i]);
f++;
continue;
}
if (first_s == to_string(s[i]))
f++;
else
d++;
if( f == d)
{
answer++;
f=0;d=0;
first_s = "";
}
}
if ( f != 0)
answer += 1;
return answer;
}
'프로그래머스 > Lv.1' 카테고리의 다른 글
[프로그래머스/C++] 명예의 전당(1) (0) | 2023.01.15 |
---|---|
[프로그래머스/C++] 크레인 인형뽑기 게임 (0) | 2023.01.11 |
[프로그래머스/C++] 체육복 (0) | 2023.01.10 |
[프로그래머스/C++] 푸드 파이트 대회 (0) | 2023.01.10 |
[프로그래머스/C++] [1차] 다트 게임 (0) | 2023.01.10 |