백준 1244 - 스위치 켜고 끄기

태태·2023년 5월 18일
0

문제

알고리즘 분류)

  • 구현
  • 시뮬레이션

풀이

남자일 경우)
반복문 => 초기식:카드번호, 조건식:N까지, 증감식:카드번호
와 같이 설정해주어서 배열안에서 카드번호의 배수로 알아서 루프를 돈다
그다음
array[i] = not array[i] 와 같이 파이써닉하게 구현했다

여자일 경우)
while문을 통해 입력받은 카드 양옆에서 부터 포인터가 시작해
두 수가 다르거나 배열의 끝에 도달할 때 까지 구간을 마찬가지로 not 해준다

출력)
20개 단위로 출력해야 하므로 i가 20이면 출력을 한번 해준 후 배열을 비운다
다시 그 배열에 20개가 될 때마다 출력한다


소스코드

python)

import sys
N = int(input())
array = list(map(int, input().split()))
student = int(input())

for _ in range(student):
    gender, number = map(int,sys.stdin.readline().split())
    if gender == 1:
        for i in range(number-1,N,number):
            array[i] = not array[i]
            
    else:
        left=number-2
        right=number
        array[number-1]=not array[number-1]
        while left>=0 and right<=N-1 and array[left]==array[right]:
            array[left] = not array[left]
            array[right] = not array[right]
            left-=1
            right+=1

result=[]
for i in range(1,N+1):
    result.append(int(array[i-1]))
    if i%20==0:
        print(*result,sep=' ')
        result=[]
print(*result,sep=' ')
profile
과정에서 재미를 느끼지 않는데 성공하는 일은 거의 없다

0개의 댓글