Kim Seon Deok

[백준] 1244 스위치 켜고 끄기 본문

python/Algorithm

[백준] 1244 스위치 켜고 끄기

seondeok 2022. 1. 14. 16:01

https://www.acmicpc.net/problem/1244

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net

1. 스위치의 처음 상태와 학생 수를 입력받음

2. 스위치가 0일 땐 1로, 1일 땐 0으로 바꾸어 주는 함수

3. 남자일 땐 받은 숫자의 배수에 해당하는 스위치만 바꾸어줌

4. 여자일 땐 받은 숫자에 해당하는 스위치를 기준으로, 좌우 대칭이면서 구간의 길이가 가장 길 때, 전체 구간의 스위치를 바꾸어줌

 

여자일 경우 좌우대칭으로 최대구간을 바꾸어주는 부분에서 오류가 많이 났었다.

while 문을 넣어주어 변수를 증가시켜 최대 구간을 구하였다.

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
= int(input())  # 스위치의 갯수
 
= list(map(int,input().split()))  # 스위치의 처음 상태
 
= int(input())  # 학생 수
 
 
def change(num):
    if T[num] == 0:
        T[num] = 1
    else:
        T[num] = 0
 
 
for r in range(s):
    gender, num = map(int,input().split())
    if gender == 1:  # 남자
        for i in range(0,N):
            if (i + 1) % num == 0:
                change(i)
                
    elif gender == 2:  # 여자
        a = 1
 
        while num -1 ->= 0 and num-1+<= N-1 and T[num-1-a] == T[num-1+a]:
            a += 1
        
        for i in range(num-1-(a-1),num-1+(a-1)+1):
            change(i)
            
          
for i in range(0,N,20):
    print(*T[i:i+20])
cs

'python > Algorithm' 카테고리의 다른 글

[백준] 2485 가로수  (0) 2022.01.14
[백준] 2659 십자카드  (0) 2022.01.14
[백준] 9012 - 괄호  (0) 2022.01.14
[백준]1302 베스트셀러  (0) 2022.01.08
[백준]1158 요세푸스 문제  (0) 2022.01.08
Comments