Algorithm (PS)

백준 1244 스위치 켜고 끄기 / 구현

minjiwoo 2022. 9. 18. 18:23
728x90

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

 

1244번: 스위치 켜고 끄기

첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩

www.acmicpc.net

성별 나눠서 문제에서 해달라는대로 구현하면 되는데 
여학생인 경우 투포인터 알고리즘을 사용해서 대칭인 부분 배열의 인덱스를 구해주어야 한다 

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

n = int(input()) # 스위치의 개수
data = list(map(int, input().split()))
m = int(input()) # 학생 수
for _ in range(m):
    gender, number = map(int, input().split())
    if gender == 1: # 남학생인 경우
        for i in range(number-1, n, number):
            if data[i] == 0:
                data[i] = 1
            else:
                data[i] = 0
    else: # 여학생인 경우
        number -= 1 # index에 맞추기
        k = 0
        while True:
            if number - k < 0 or number + k > n-1:
                break
            if data[number - k] == data[number + k]:
                k += 1
            else:
                break
        k -= 1
        for i in range(number-k, number+k+1):
            if data[i] == 0:
                data[i] = 1
            else:
                data[i] = 0

for i in range(n):
    print(data[i], end= " ")
    if (i+1) % 20 == 0:
        print()
728x90