본문 바로가기

백준 문제풀이

(C)백준 1244번 스위치 켜고 끄기

반응형
방학 하루 일솔 3일차

아직까지는 쌩 구현을 하고 있어서 상당히 편안하다.

#include<stdio.h>
int main (void){
    int s_num,p_num;
    scanf("%d",&s_num);
    int s_state[101]={0,}; int sex[101]={0,}; int given_num[101]={0,};
    for (int i=1;i<=s_num;i++)
    {
        scanf("%d",&s_state[i]);
    }
    scanf("%d",&p_num);
    for(int i = 1;i<=p_num;i++)
    {
        scanf("%d %d",&sex[i],&given_num[i]);
    }
    for(int i = 1;i<=p_num;i++)
    {
        if(sex[i] == 1)
        {
            for(int j = 1; j<=s_num;j++)
            {
                if(j % given_num[i]==0)
                    s_state[j]=1-s_state[j];
            }
        }
        else
        {
            int center= given_num[i];
            int left = center -1;
            int right = center+1;
            while(left >= 1&& right<=s_num &&s_state[left]==s_state[right])
            {
                left--; right++;
            }
            for (int j = left + 1; j <= right - 1; j++) {
                            s_state[j] = 1 - s_state[j];
                        }
        }
    }
    for (int i=1 ; i<=s_num; i++) {
        printf("%d ",s_state[i]);
        if(i % 20 ==0)
            printf("\n");
    }
    
}

이번 문제의 핵심은 다음과 같다.

스위치 토글을 간단히 표현하기
left,right를 이용하여 범위 지정해주기이다.
반응형