Implementation_05_전구(21918)

Eugenius1st·2022년 5월 2일
0

Algorithm_Baekjoon

목록 보기
84/158

Implementation05전구(21918)

문제

NN개의 전구가 있고 맨 왼쪽에 있는 전구를 첫 번째라고 하자. 전구의 상태는 두 가지가 있으며 이를 숫자로 표현한다.

11은 전구가 켜져 있는 상태를 의미하고, 00은 전구가 꺼져 있는 상태를 의미한다.

전구를 제어하는 명령어가 1번부터 4번까지 4개가 있다. 아래 표는 각 명령어에 대한 설명이다.

입력

첫 번째 줄에 전구의 개수 NN와 입력되는 명령어의 개수 MM이 주어진다.

두 번째 줄에는 NN개의 전구가 현재 어떤 상태 ss인지 주어진다. (00은 꺼져있는 상태, 11은 켜져있는 상태)

33 번째 줄부터 M+2M + 2 번째 줄까지 세 개의 정수 a,b,ca, b, c가 들어온다.

aaaa번째 명령어를 의미하고 b,cb, caa가 1인 경우는 각각 i,xi, x를 의미하고 aa2,3,42, 3, 4 중 하나면 각각 l,rl, r을 의미한다.

출력

모든 명령어를 수행한 후 전구가 어떤 상태인지 출력한다.

풀이

코드

import sys
sys.stdin = open ("input.txt", "rt")
input = sys.stdin.readline


n, m = map(int,input().split())
arr = list(map(int,input().split()))
for i in range(m):

    a, b, c = map(int,input().split())
    if a == 1:
        arr[b-1] = c
    else:
        if a == 2:
            for i in range(b-1,c):
                if arr[i] == 0:
                    arr [i] = 1
                else: arr[i] = 0
        elif a == 3:
            arr[b-1:c] = [0] * (c-b+1)
                # 전구를 모두 끈 상태인 0으로 만들어 준다
        else:
            arr[b-1:c] = [1] * (c-b+1)
                # 전구를 모두 켠 상태인 1로 만들어 준다
for i in arr:
    print(i, end=" ")

    

배운 것

        ``arr[b-1:c] = [0] * (c-b+1)``
        이렇게 한번에 x 부터 y 까지의 값을 바꿔줄 수 있구나 !!

코멘트

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글