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

거북이·2023년 9월 23일
0

백준[실버4]

목록 보기
90/91
post-thumbnail

💡문제접근

  • 간단한 시뮬레이션 문제였는데 잦은 IndexErrorWA 때문에 많이 시간을 허비했던 문제였다. 풀긴 풀었지만 오랜 시간이 걸려서 해결했다는 부분에서 많이 아쉬움을 느꼈던 문제였다.

💡코드(메모리 : 31256KB, 시간 : 40ms)

import sys
input = sys.stdin.readline

S = int(input())
switch = [-1] + list(map(int, input().strip().split()))
student = int(input())

for _ in range(student):
    sex, num = map(int, input().strip().split())
    if sex == 1:
        for i in range(num, S+1, num):
            if switch[i] == 1:
                switch[i] = 0
            else:
                switch[i] = 1
    else:
        if switch[num] == 1:
            switch[num] = 0
        else:
            switch[num] = 1
        for i in range(S // 2):
        	# 대칭 관계가 성립되지않으면서 범위를 벗어난 값일 경우
            if num + i > S or num - i < 1:
                break
            # 대칭 관계 확인
            if switch[num + i] == switch[num - i]:
                if switch[num + i] == 1:
                    switch[num + i] = 0
                else:
                    switch[num + i] = 1

                if switch[num - i] == 1:
                    switch[num - i] = 0
                else:
                    switch[num - i] = 1
            else:
                break

for i in range(1, S+1):
    print(switch[i], end = " ")
    if i % 20 == 0:
        print()

💡소요시간 : 1h 12m

0개의 댓글