스위치


답안 제출

Points: 8
시간 제한: 2.0s
메모리 제한: 1G

문제 유형
허용된 언어
Python

1번부터 연속적으로 번호가 붙어 있는 스위치들이 있다. 스위치는 켜져(1) 있거나 꺼져(0) 있는 상태이다.

학생들에게 1 이상 \(N\) 이하인 자연수를 하나씩 나누어 주었다. 학생들은 자신의 성별/역할과 받은 수에 따라 아래와 같은 방식으로 스위치를 조작하게 된다.

< 처리조건 >

  1. 남학생 (성별 1): 자기가 받은 수의 배수 번호에 해당하는 스위치들의 상태를 바꾼다. (켜져 있으면 끄고, 꺼져 있으면 켠다.)
  2. 여학생 (성별 2): 자기가 받은 수 번호의 스위치를 중심으로 좌우가 대칭이면서 가장 많은 스위치를 포함하는 구간을 찾아서, 그 구간에 속한 모든 스위치의 상태를 바꾼다. (구간의 스위치 개수는 항상 홀수이다.)
  3. 관리학생 (성별 3): 자기가 받은 수 \(NUM\)번 스위치를 기준으로 좌우 2칸 범위(\(NUM-2\)번부터 \(NUM+2\)번까지)에 속한 모든 스위치의 상태를 바꾼다. (단, 1번 미만이거나 \(N\)번을 초과하는 스위치 번호는 무시한다.)

입력으로 스위치들의 처음 상태가 주어지고, 각 학생의 성별/역할과 받은 수가 주어진다.

학생들이 입력되는 순서대로 스위치의 상태를 바꾸었을 때, 스위치들의 마지막 상태를 출력하는 함수 change_male change_female change_manager 을 작성하시오.

함수를 사용하는 코드

작성한 함수는 아래 코드와 함께 실행된다.

n = int(input())
switches = [0] #1-based 
for x in input().split():
    switches.append(int(x))

k = int(input())
for _ in range(k):
    gender, num = map(int, input().split())
    if gender == 1:
        change_male(switches, num)
    elif gender == 2:
        change_female(switches, num)
    elif gender == 3:
        change_manager(switches, num)

n = len(switches) - 1
for i in range(1, n + 1):
    print(switches[i], end=" ")
    if i % 20 == 0:
        print()
if n % 20 != 0:
    print()

위 코드가 정상적으로 동작하도록 함수를 직접 정의한다. 제출할 때는 작성한 함수의 정의 전체만 제출한다.

입력

첫째 줄에는 스위치의 개수 \(N\)이 주어진다. (\(1 \le N \le 100\))

둘째 줄에는 각 스위치의 상태가 1번부터 차례대로 주어진다. (켜짐: 1, 꺼짐: 0)

셋째 줄에는 학생 수 \(K\)가 주어진다. (\(1 \le K \le 100\))

넷째 줄부터 \(K\)개의 줄에 걸쳐 학생의 성별/역할(1, 2, 3 중 하나)과 받은 수 \(NUM\)이 공백으로 구분되어 주어진다. (\(1 \le NUM \le N\))

출력

스위치의 상태를 1번 스위치부터 마지막 스위치까지 한 줄에 20개씩 공백으로 구분하여 출력한다.

예제 입력 1

8
0 1 0 1 0 0 0 1
3
1 3
2 3
3 6

예제 출력 1

1 0 0 1 0 0 1 0

코멘트

현재 작성된 코멘트가 없습니다.