[실버4] 1244번 : 스위치 켜고 끄기

Quesuemon·2022년 1월 22일
0

코딩테스트 준비

목록 보기
88/111

🛠 문제

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


👩🏻‍💻 해결 방법

문제를 그대로 코드로 구현하는 유형의 문제다
switch를 0에서 1로, 1에서 0으로 변환하는 부분은 함수로 따로 구현하여 문제를 해결하면 효율적이다

소스 코드

def change(num):
  if switch[num] == 0:
    switch[num] = 1
  else:
    switch[num] = 0
  
  return

n = int(input())
switch = [-1] + list(map(int, input().split()))
s = int(input())

for _ in range(s):
  gender, num = map(int, input().split())

  # 남학생일 경우
  if gender == 1:
    for i in range(num, n+1, num):
      change(i)
  
  # 여학생일 경우
  elif gender == 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

# 한 줄에 20개씩 출력
for i in range(1, n+1):
  print(switch[i], end = ' ')
  if i % 20 == 0:
    print()

0개의 댓글

관련 채용 정보