[백준/Python] 1244번 - 스위치 켜고 끄기

Sujin Lee·2022년 5월 31일
0

코딩테스트

목록 보기
55/172
post-thumbnail

문제

1244번 - 스위치 켜고 끄기

문제 해결 과정

  • 학생과 자연수를 받을 때마다 여학생인지 남학생인지 확인 후 스위치 상태 바꾸기
  • 여자일 경우 조건을 잘 보고 바꾸기

시행착오

  • 여학생 조건에서 시간이 많이 걸림
    • for j in range(1,n//2+1): 여기서 1을 더해주지 않아서 계속 틀렸음 범위를 잘 생각하자
    • if num-1-j >= 0 and num-1+j < n: 인덱스 조건을 벗어나서 에러가 났음 조건을 잘 명시해주자
    • else: break 처리를 안해줘서 에러가 났음 break문을 잘 설정해두자
    • 20개씩 출력하는 부분에서 이상하게 머리가 안돌아갔음 나눠서 출력하는 부분은 외워두자 출력하는 방법은 여러개이겠지만 우선은 이걸로 함
import sys
n = int(sys.stdin.readline())

switch = list(map(int,sys.stdin.readline().split()))

student = int(sys.stdin.readline())

# for문 range범위 잘 설정하기
for _ in range(student):
  s, num = map(int,sys.stdin.readline().split())
  # 남학생일 때
  if s == 1:
    for i in range(1,n//num+1):
      if switch[i*num-1] == 1:
        switch[i*num-1] = 0
      else:
        switch[i*num-1] = 1
  # 여학생일 때
  if s == 2:
    if switch[num-1] == 1:
      switch[num-1] = 0
    else:
      switch[num-1] = 1      
    for j in range(1,n//2+1):
      if num-1-j >= 0 and num-1+j < n:
        if switch[num-1+j] == switch[num-1-j]:
          if switch[num-1+j] == 0:
            switch[num-1+j] = 1
            switch[num-1-j] = 1
          else:
            switch[num-1+j] = 0
            switch[num-1-j] = 0
        else:
          break

for i in range(len(switch)):
  if i != 0 and i % 20 == 0:
    print("")
    print(switch[i], end=" ")
  else:
    print(switch[i], end=" ")
profile
공부한 내용을 기록하는 공간입니다. 📝

0개의 댓글