본문 바로가기
코딩test공부/백준python

1244.스위치 끄고 켜기

by 왕방개 2024. 1. 4.

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

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net

1.설명

일단 남자랑 여자 조건에 따른 행동을 맞게 해줘야 하는데, 남자 같은 경우는 3이면 3,6 같이 배수만 바꾸면 되므로 쉽게 해결했다. 여자는 기준을 잡아 대칭인 곳 까지 찾아 변경해야합니다. 한칸씩 증가하면서 같을때까지 증가하다 아니면 바로 break문으로 빠지게 해결했다. 마찬가지로 범위를 벗어나는 상황일때 필요한 상황을 보면서 진행했습니다.

 

2.코드

def change(num): #함수선언
    if switch[num] == 0:
        switch[num] = 1
    elif switch[num]==1:
        switch[num] = 0
    return


N = int(input()) #스위치 수 저장
switch = [0] + list(map(int, input().split())) #스위치 상태
students = int(input())
for _ in range(students):
    sex, num = map(int, input().split())
    # 남자
    if sex == 1:
        for i in range(num, N+1, num):
            change(i)
    # 여자
    elif sex == 2:
        change(num)
        for i in range(N//2):
            if num + i > N or num - i < 1 : break
            if switch[num + i] == switch[num - i]:
                change(num + i)
                change(num - i)
            else:
                break
                
for i in range(1, N+1):
    print(switch[i], end = " ")
    if i % 20 == 0 : #20 넘어가면
        print()

'코딩test공부 > 백준python' 카테고리의 다른 글

13305.주유소  (1) 2024.01.09
9017.크로스 컨트리  (1) 2024.01.08
8979.올림픽  (1) 2024.01.03
10431.줄세우기  (0) 2024.01.02
9655. 돌게임  (0) 2024.01.02