Kim Seon Deok
[백준] 1244 스위치 켜고 끄기 본문
https://www.acmicpc.net/problem/1244
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 | N = int(input()) # 스위치의 갯수 T = list(map(int,input().split())) # 스위치의 처음 상태 s = 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 -a >= 0 and num-1+a <= 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