알고리즘 공부/CodeUp 문제풀이

코드업 2035:앉을 수 있는 자리(C)

티들 2023. 10. 4. 23:11

문제 설명

n명이 가로로 앉을 수 있는 긴 의자에 사람이 여러명 앉아 있다.

철수는 이 의자에 앉고 싶은데 이왕이면 좌우에 사람이 없는 곳에 앉고 싶다.

의자의 길이 n과 자리에 사람이 앉아 있는지에 대한 정보가 주어질 때 이러한 자리의 수를 출력하시오.

단, 양 끝자리의 경우 한쪽에만 사람이 없으면 앉을 수 있는 자리로 본다.

 

입력

첫째 줄에 의자의 길이 n이 입력된다. ( 1 <= n <= 10,000 )

둘째 줄에 제일 왼쪽 자리부터 자리의 정보가 입력된다. 사람이 앉아 있으면 1, 없으면 0을 입력받고, 각 자리의 정보는 띄어쓰기로 구분된다.

 

출력

좌우에 사람이 없는 자리의 수를 출력한다.

 

입력 예시

20

1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 1 0

 

출력 예시

3

 

나의 코드

#include <stdio.h>

int main()
{
    int n, i, count = 0;
    scanf("%d", &n);	// n 입력 받음
    int s[n];	// 배열 생성

    for (i = 0; i < n; i++)
        scanf("%d", &s[i]);	// 입력 받음

    for (i = 1; i < n - 1; i++)
    {
        if (s[i] == 0)
        {
        	// 자신의 자리와 양옆이 다비었으면 카운트 증가 
            if (s[i - 1] == 0 && s[i + 1] == 0)
                count++;
        }
    }

    if (s[0] == 0 && s[1] == 0)	// 맨 앞쪽 자리 계산
        count++;
    if (s[n - 1] == 0 && s[n - 2] == 0 && n>1)	// 뒷쪽 자리 계산
        count++;

    printf("%d", count);	// 출력
    return 0;
}

 

문제 바로가기:https://codeup.kr/problem.php?id=2035&rid=0