728x90
반응형
문제
내가 작성한 코드 (C++ 성공)
#include <iostream>
#include <string.h>
using namespace std;
int main(){
char s[101];
cin >> s;
string ans = "";
ans += s[0];
int cnt = 0;
for(int i=1; i<=strlen(s); i++){
if(s[i-1] == s[i]-1){
ans += s[i];
} else {
if(ans.size() == 3) cnt++;
ans = "";
ans += s[i];
}
}
cout << cnt;
return 0;
}
정리
딱 연속된 3자리의 숫자가 있을 경우의 횟수를 출력하는 문제였다.
이 문제를 보자마자 문자와 문자열의 크기를 이용해서 풀면 되겠구나 생각이 들었다.
그래서 문자를 입력받았고 숫자의 갯수를 구분하기 위한 빈 문자열 하나를 만들어주었다.
입력받은 문자의 길이만큼 반복하는데 이전의 숫자가 현재의 숫자 - 1 이면 문자열에 문자를 더해준다.
만약 숫자가 연속된다면 계속해서 문자열에 넣어주고 연속하지 않는 숫자가 나오게 되면
문자열의 크기가 3인지 아닌지 확인 후에 갯수를 세어준다.
그리고 문자열을 다시 빈 문자열로 만들어준 후에 다시 반복한다.
728x90
반응형
'알고리즘 > BaekJoon' 카테고리의 다른 글
[백준 알고리즘] 9020번 : 골드바흐의 추측 (0) | 2020.02.24 |
---|---|
[백준 알고리즘] 2698번 : 인접한 비트의 개수 (0) | 2019.08.24 |
[백준 알고리즘] 17285번 : XORChic (0) | 2019.08.15 |
[백준 알고리즘] 17284번 : Vending Machine (0) | 2019.08.15 |
[백준 알고리즘] 17283번 : I am Groot (0) | 2019.08.15 |