카테고리 없음

코드업 2821:가장 긴 막대기의 길이는?

티들 2023. 9. 25. 22:58

문제 설명

세종이는 길이가 n이고 각 부분이 흰색 또는 검은색으로 칠해진 나무 막대가 있다.
각 부분의 길이는 최소 1이고 각 색깔의 길이는 1의 배수이다.
이 나무 막대를 원하는 부분을 잘라 하나의 막대기를 만들려고 한다.
잘린 조각을 연결하여 막대를 만들 수는 없다.
같은 색깔로 만들 수 있는 가장 긴 막대의 길이를 구하는 프로그램을 작성하시오.

 
입력
첫 번째 줄에는 나무의 길이 n이 주어진다.
두 번째 줄에는 각 부분의 색깔을 나타내는 길이가 n인 문자열 s가 주어진다.
[입력값의 정의역]
1 <= n <= 1,000
s_i = { 1, 0 } (1=검은색, 0=흰색)
 
출력
한 가지 색으로 만들 수 있는 가장 긴 막대의 길이를 출력한다.
 
입력 예시
10
0100111010
 
출력 예시
3
 
나의 코드
 

#include <stdio.h>

int main()
{
    int n, i, max=0, count=0;	// 변수 선언
    char stick[1000], color;
    scanf("%d", &n);	// 입력
    scanf("%s", stick);
    color = stick[0];	// 인덱스 0번을 color에저장 
    for(i=0;i<n;i++)	// n만큼 반복
    {
        if(color == stick[i]){	// 색깔이 같으면 카운트 증가
            count++;
            if(max<count) max = count;	// 최댓값이면 저장
        }
        else {
            count = 1;	// 색깔이 다르면 카운트 1로초기화 
            color = stick[i];	// 컬러를 변경
        }
    }
    printf("%d", max);	// 최댓값 출력
    return 0;
}

 
문제 바로가기: https://codeup.kr/problem.php?id=2821