문제 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 |