https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
문제에서 생각해봐야할 것은 '스위치를 중심으로 좌우가 대칭이면서 가장 많은 스위치를 포함하는 구간을 찾아서, 그 구간에 속한 스위치의 상태를 모두 바꾼다.' 는 것이다.
스위치의 길이를 반으로 나눈 후, 그 길이만큼 다 비교하는 방법을 택했다.
N=int(input())
btn=[-1] + list(map(int,input().split()))
student_num = int(input())
def switch(num):
if(btn[num]==0):
btn[num]=1
else:
btn[num]=0
return
for _ in range(student_num):
sex, num = map(int,input().split())
if(sex==1):
for i in range(num, N+1, num):
switch(i)
else:
switch(num)
for j in range(N//2):
if num+j > N or num-j < 1: break
if btn[num+j] == btn[num-j]:
switch(num+j)
switch(num-j)
else:
break
for i in range(1,N+1):
print(btn[i], end=' ')
if i%20 == 0: print()
'알고리즘 공부 > 구현' 카테고리의 다른 글
[백준/구현] 2522번: 별 찍기 - 12 (0) | 2022.10.30 |
---|---|
[백준/구현] 1009번: 분산처리 (0) | 2022.10.30 |
[백준/구현] 1924번: 2007년 (0) | 2022.10.23 |
[백준/구현] 2108번: 통계학 (0) | 2022.10.23 |
[백준/구현] 10797번: 10부제 (0) | 2022.10.02 |