문제
https://www.acmicpc.net/problem/2495
문제
여덟 자리의 양의 정수가 주어질 때, 그 안에서 연속하여 같은 숫자가 나오는 것이 없으면 1을 출력하고, 있으면 같은 숫자가 연속해서 나오는 구간 중 가장 긴 것의 길이를 출력하는 프로그램을 작성하라.
예를 들어 세 개의 숫자 12345123, 17772345, 22233331이 주어졌다고 하자. 12345123은 연속하여 같은 숫자가 나오는 것이 없으므로 1을 출력하고, 17772345는 7이 세 개 연속하여 나오므로 3을 출력하며, 22233331의 경우에는 2가 세 개, 3이 네 개 연속해서 나오므로 그 중 큰 값인 4를 출력하여야 한다.
입력
첫째 줄부터 셋째 줄까지 각 줄에 하나씩 세 개의 여덟 자리 양의 정수가 주어진다.
출력
첫째 줄에서 셋째 줄까지 한 줄에 하나씩 각 입력된 수 내에서 같은 숫자가 연속하여 나오는 가장 긴 길이를 입력 순서대로 출력한다.
Algorithm
배열을 string으로 입력받은 문자열 배열의 요소들을 아스키코드 '0'에 해당하는 수를 빼어 정수 배열로 바꿔준 다음 같은숫자가 나온다면 계속해서 e를 뒤로 한칸씩 찾으며 만약 끊어진다면 끊어진 구간부터 시작해서 다시 탐색하도록하여 거리중 가장 긴 것을 구하여 출력하였다.
Code
#include<iostream>
#include<string>
#define N 8
using namespace std;
int m_len(int *arr);
void sToint(string&line,int *arr);
int main(){
int arr[N];
string line;
for(int k=0;k<3;k++){
cin>>line;
sToint(line,arr);
cout<<m_len(arr)<<endl;
}
return 0;
}
int m_len(int *arr){
int s=0,e=0,m_len=1;
while(e<N){
if(arr[s]==arr[e]){
m_len=max(m_len,e-s+1);
e++;
}
else{
s=e;
}
}
return m_len;
}
void sToint(string&line,int *arr){
for(int i=0;i<N;i++){
arr[i]=line[i]-'0';
}
}
'Koala - 17기 > 코딩테스트 기초 스터디' 카테고리의 다른 글
[백준/Python] 1813번 : 논리학 교수 (0) | 2025.01.26 |
---|---|
[백준/Python] 2153번 : 소수 단어 (0) | 2025.01.26 |
[백준/C++] 18111번 마인크래프트 (0) | 2025.01.19 |
[백준/Python] 8958번 OX퀴즈 (0) | 2025.01.19 |
[백준/Python] #4435 중간계 전쟁 (0) | 2025.01.12 |