티스토리 뷰

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

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net

단순 구현문제이지만, 파이썬 입력받는 코드가 익숙하지 않아 많이 헤맸다..

import sys

N = 0
switches = []
students = 0


def solve():
    init()
    switch()
    answer()

def init():
    global N, switches, students

    N = int(input())
    switches = [-99] + list(map(int, input().split()))
    students = int(input())
    return

def switch():
    global N, switches, students

    for _ in range(students):
        gender, switch_number = list(map(int, input().split()))
        if gender == 1:
            for i in range(switch_number, N + 1, switch_number):
                change(i)
        else:
            change(switch_number)
            move = 1
            while True:
                left = switch_number - move
                right = switch_number + move

                if left < 1 or right > N:
                    break
                if switches[left] == switches[right]:
                    change(left)
                    change(right)
                    move +=1
                else:
                    break

def change(switch_number):
    global switches
    if switches[switch_number] == 1:
        switches[switch_number] = 0
    else:
        switches[switch_number] = 1
        
def answer():
    global switches
    for i in range(1, N + 1):
        print(switches[i], end=" ")
        if i % 20 == 0:
            print()

if __name__ == '__main__':
    solve()
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함