본문 바로가기
백준

백준 1244 스위치 켜고 끄기

by 콩순이냉장고 2021. 11. 25.

문제 URL : https://www.acmicpc.net/problem/1244

 

1244번: 스위치 켜고 끄기

첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩

www.acmicpc.net

문제 접근법 : 

 

시뮬레이션 문제입니다. 여자일경우 팰린드롬 찾듯이 팰린드롬처럼 알고리즘을 사용하면 되기때문에

문제조건대로만 해주시면 크게 어렵지 않은 문제입니다.

 

소스코드 : 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
 
public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n=Integer.parseInt(br.readLine());
        StringTokenizer st=new StringTokenizer(br.readLine());
        int light[] = new int[n+1];
        for(int i=1;i<=n;i++) {
            light[i]=Integer.parseInt(st.nextToken());
        }
        int m=Integer.parseInt(br.readLine());
        for(int i=0;i<m;i++) {
            int a,b;
            st=new StringTokenizer(br.readLine());
            a=Integer.parseInt(st.nextToken());
            b= Integer.parseInt(st.nextToken());
            if(a==1) {
                for(int j=b;j<=n;j+=b) {
                    light[j]^=1;
 
                }
            }
            else {
                int l=b;
                int r=b;
                int l2=b;
                int r2=b;
                while(l>=1&&r<=n&&light[l]==light[r]) {
                    l2=l;
                    r2=r;
                    l--;
                    r++;
                }
                for(int j=l2;j<=r2;j++)
                    light[j]^=1;                
            }
        }
        int idx=0;
        for(int i=1;i<=n;i++,idx++) {
            if(idx!=0&&idx%20==0)
                bw.write("\n");
            bw.write(light[i]+" ");
        }
        br.close();
        bw.close();
        
    }
}
 
cs

 

궁금한점 혹은 모르는점 어떤 질문이든 댓글은 언제나 환영입니다.

 

 

'백준' 카테고리의 다른 글

백준 1726 로봇  (0) 2021.12.11
백준 2933 미네랄  (0) 2021.11.29
백준 18310 안테나  (0) 2021.11.25
백준 13417 카드 문자열  (0) 2021.11.25
백준 17089 세 친구  (0) 2021.11.25