Today
Total
06-29 18:41
관리 메뉴

홍우진의 개발 일기장

[백준] 1244번: 스위치 켜고 끄기 / 파이썬 본문

알고리즘/백준

[백준] 1244번: 스위치 켜고 끄기 / 파이썬

홍우진 2025. 1. 16. 23:50
728x90
반응형

문제 링크


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

 

풀이 코드


def onoff(idx): # 스위치 변환
    if sw[idx] == 0:
        sw[idx] = 1
    else:
        sw[idx] = 0

sw_num = int(input())
sw = list(map(int, input().split()))
hak_num = int(input())

for _ in range(hak_num):   
    sex, num = map(int, input().split())
    if sex == 1:    # 남자라면
        for i in range(1, sw_num+1):    # 스위치 비교 후 바꾸기
            if i % num == 0:
                onoff(i - 1)
    else:   # 여자라면
        idx = num - 1   
        onoff(idx)  # 변환
        i = 1   
        while num - i >= 1 and num + i <= sw_num:   # 양쪽 대칭 비교
            if sw[idx + i] == sw[idx - i]:  # 같다면 변환
                onoff(idx + i)
                onoff(idx - i)
            else:
                break
            i += 1

for i in range(sw_num): # 출력 조건에 맞춰 출력
    print(sw[i], end='')
    if (i + 1) % 20 == 0:
        print()
    else:
        print(' ', end='')

코드 해석


순회하며 스위치를 조건에 맞게 변환하면 된다.

스위치 의 대칭을 확인할 때 스위치의 밖으로 나가지 않게 막는것이 키포인트

 

체감 난이도: ★★☆

728x90
반응형
Comments