반응형
https://www.acmicpc.net/problem/2495
문제
여덟 자리의 양의 정수가 주어질 때, 그 안에서 연속하여 같은 숫자가 나오는 것이 없으면 1을 출력하고, 있으면 같은 숫자가 연속해서 나오는 구간 중 가장 긴 것의 길이를 출력하는 프로그램을 작성하라.
예를 들어 세 개의 숫자 12345123, 17772345, 22233331이 주어졌다고 하자. 12345123은 연속하여 같은 숫자가 나오는 것이 없으므로 1을 출력하고, 17772345는 7이 세 개 연속하여 나오므로 3을 출력하며, 22233331의 경우에는 2가 세 개, 3이 네 개 연속해서 나오므로 그중 큰 값인 4를 출력하여야 한다.
입력
첫째 줄부터 셋째 줄까지 각 줄에 하나씩 세 개의 여덟 자리 양의 정수가 주어진다.
출력
첫째 줄에서 셋째 줄까지 한 줄에 하나씩 각 입력된 수 내에서 같은 숫자가 연속하여 나오는 가장 긴 길이를 입력 순서대로 출력한다.
예제 입력 1 복사
12345123
17772345
22233331
예제 출력 1 복사
1
3
4
풀이
1. 연속구간이 있으면 cnt로 카운트한다.
2. 여러 개의 cnt가 나올 경우 제일 큰 값(max)을 출력한다.
코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
for(int i=0; i<3; i++){
cin>>str;
int cnt=1;
int max=1;
for(int i=0; i<str.length()-1; i++){
if(str[i]==str[i+1]){
cnt++;
if(cnt>max){
max=cnt;
}
}
else{ // keypoint
cnt=1; // 연속구간이 없으면 1 출력
}
}
cout<<max<<"\n";
}
return 0;
}
|
cs |
반응형
'백준 > C++' 카테고리의 다른 글
[BaeKJoon/C++] 백준 11091 c++ 알파벳 전부 쓰기 (0) | 2022.02.06 |
---|---|
[BaeKJoon/C++] 백준 10867 c++ 중복 빼고 정렬하기 (0) | 2022.02.06 |
[BaeKJoon/C++] 백준 5656 c++ 비교 연산자 (0) | 2022.02.05 |
[BaeKJoon/C++] 백준 2774 c++ 아름다운 수 (0) | 2022.02.05 |
[BaeKJoon/C++] 백준 1100 c++ 하얀 칸 (0) | 2022.02.05 |