[파이썬]백준 1244 스위치켜고끄기

Byeonghyeon Kim·2021년 2월 26일
0

알고리즘문제

목록 보기
19/93
post-thumbnail

링크

백준 1244 스위치켜고끄기


문제를 풀면서 내가 얼마나 꼼꼼하지 못한 사람인지 느꼈다.
푸를 방법을생각하는 것 자체는 쉬워서 금방 구현했으나 조건을 자세히 주지 못해 수많은 인덱스 에러를 만났다..
남성일때의 코드는 인덱스에러가날 여지가 적었고 여성일때의 코드에서 인덱스 에러가 발생했다.
그리고 값이 20개 초과일시 출력을 20개씩 끊어서 해야했는데 바보처럼 이부분에서도 꽤 헤맸다.


정답 코드

N = int(input())
bit = list(map(int, input().split()))
S = int(input())

for _ in range(S):
    gender, switch = map(int, input().split())

    if gender == 1:
        for i in range(1, (len(bit) // switch) + 1):
            if bit[(switch * i) - 1] == 0:
                bit[(switch * i) - 1] = 1
            else:
                bit[(switch * i) - 1] = 0

    if gender == 2:
        if bit[(switch - 1)] == 0:
            bit[(switch - 1)] = 1
        else:
            bit[(switch - 1)] = 0
        l = switch - 2
        r = switch
        while l >= 0 and r < N and bit[l] == bit[r]:
            if bit[l] == 0:
                bit[l], bit[r] = 1, 1
            elif bit[l] == 1:
                bit[l], bit[r] = 0, 0
            l -= 1
            r += 1
            if l < 0 or r >= N:
                break

cnt = 0
ans = ''
for i in range(N):
    ans += (str(bit[i]) + ' ')
    cnt += 1
    if cnt == 20:
        print(ans)
        ans = ''
        cnt = 0
if len(ans) != 0:
    print(ans)

알게된 것👨‍💻

  • 예외사항을 꼼꼼히 생각해볼것 코드를 쓰기전에 생각 또 생각!
profile
자기 주도 개발전 (개발, 발전)

0개의 댓글