CodingTest/Baekjoon

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

JunJangE 2022. 4. 14. 20:51

문제

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net

알고리즘

- 반복문을 통해 스위치 상태를 변경한다.

- 남학생의 경우와 여학생의 경우를 나누어 조건에 맞게 스위치를 변경해준다.

- 스위치를 변경 후 상태를 20개씩 출력한다.

코드

import sys

n = int(sys.stdin.readline())
state = ["제로"] + list(map(int, sys.stdin.readline().split()))
p = int(sys.stdin.readline())

# 반복문을 통해 스위치 상태를 변경
for i in range(p):
    # 성별, 학생이 받은 수
    sex, idx = map(int, sys.stdin.readline().split())

    # 남학생
    if sex == 1:
        plus = idx
        while plus <= n:
            state[plus] = abs(state[plus] - 1)
            plus += idx

    # 여학생
    else:
        total = min(n + 1 - idx, idx)
        state[idx] = abs(state[idx] - 1)

        for j in range(total):
            if state[idx - j] == state[idx + j]:
                state[idx - j] = abs(state[idx - j] - 1)
                state[idx + j] = abs(state[idx + j] - 1)

            else:
                break

# 20개씩 출력
for i in range(1, n + 1):
    print(state[i], end=" ")

    if i % 20 == 0:
        print("")

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com