본문 바로가기

스터디 1일 1커밋

240305 [BOJ/백준] 1244. 스위치 켜고 끄기

 

1244번: 스위치 켜고 끄기 (acmicpc.net)

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net


나의 코드

num = int(input())
switch = list(map(int, input().split()))
student = int(input())
for _ in range(student):
    gender, start = map(int, input().split())

    if gender == 1:  # 남학생이라면
        for i in range(start-1, len(switch), start):
            if switch[i] == 0:
                switch[i] = 1
            else:
                switch[i] = 0


    start -= 1
    if gender == 2:  # 여학생이라면
        for j in range(1, len(switch)//2):
            if 0 <= start - j and start + j <= len(switch)-1:
                if switch[start - j] != switch[start + j]:
                    break
                elif switch[start - j] == switch[start + j] == 0:
                    switch[start - j] = 1
                    switch[start + j] = 1
                elif switch[start - j] == switch[start + j] == 1:
                    switch[start - j] = 0
                    switch[start + j] = 0
        if switch[start] == 0:
            switch[start] = 1
        else:
            switch[start] = 0

for k in range(0, len(switch), 20):
    print(*switch[k:k+20])

 

결과


처음에 무슨 학생 수를 받는데 그만큼 범위를 정해야 되는데 그냥 2로 정해서 틀렸다.. 무슨 정신으로 문제를 푼건지...?  직관적으로 남학생일 때, 여학생일 때 어떻게 해야 되는지 자세히 설명이 되어있어서 코드를 짜기엔 무리가 없었다. 근데 시간은 여전히 오래 걸리는 듯....ㅜㅜ