본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 21918번 전구(python)

by 윤무무 2023. 4. 12.

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

 

21918번: 전구

$N$개의 전구가 있고 맨 왼쪽에 있는 전구를 첫 번째라고 하자. 전구의 상태는 두 가지가 있으며 이를 숫자로 표현한다. $1$은 전구가 켜져 있는 상태를 의미하고, $0$은 전구가 꺼져 있는 상태를

www.acmicpc.net

 

1. 난이도 브론즈2

 

상반기 코테가 슬슬 시작되려고 하고 있다.

 

요즘 구현이나 시뮬레이션 문제 빈도가 많이 늘어났다고 해서 쉬운 문제부터 천천히 다시 풀어갈 생각

 

2. 내가 작성한 코드
n,m = map(int, input().split()) #전구 개수, m명령어 개수

light = list(map(int, input().split()))

for _ in range(m):
    op, num1, num2 = map(int, input().split())

    if op == 1:
        light[num1-1] = num2
    elif op == 2:
        for i in range(num1-1,num2):
            if light[i] == 0:
                light[i] = 1
            else:
                light[i] = 0
    elif op == 3:
        for i in range(num1 - 1, num2):
            light[i] = 0
    else:
        for i in range(num1-1,num2):
            light[i] = 1

for i in range(n):
    print(light[i],end=" ")

 

 - list의 range를 잘 확인해야한다.

 - op가 3이나 4인 경우 굳이 for문을 사용할 필요 없이 주어진 범위에 0, 1을 곱해서 채워주면 된다.

댓글