본문 바로가기

카테고리 없음

파이썬) 스위치 켜고 끄기 - BOJ

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

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net

 

n = int(input())

arr = list(map(int, input().split()))

arr = [-1] + arr

m = int(input())

stu = []


def male(num):
    for i in range(1, n+1):
        if i % num == 0:
            if arr[i] == 1:
                arr[i] = 0
            else:
                arr[i] = 1


def female(num):
    if arr[num] == 1:
        arr[num] = 0
    else:
        arr[num] = 1

    left = num - 1
    right = num + 1

    while left > 0 and right <= n:
        if arr[left] == arr[right]:
            if arr[left] == 1:
                arr[left] = 0
                arr[right] = 0
            else:
                arr[left] = 1
                arr[right] = 1

            left -= 1
            right += 1
        else:
            break


for i in range(m):
    sex, num = map(int, input().split())

    if sex == 1:
        male(num)
    else:
        female(num)


for i in range(1, len(arr)):
    if i > 0 and i % 20 == 0:
        print(arr[i])
    else:
        print(arr[i], end=' ')

사실 문제 이해만 조금 어려운 구현문제였다.

인덱스가 1부터 시작이기 때문에 arr의 맨 왼쪽에 -1을 더해주었다.