백준 문제 풀이 - 구현
문제 확인 🏃
8
0 1 0 1 0 0 0 1
2
1 3
2 3
>> 1 0 0 0 1 1 0 1
8
0 1 0 1 0 0 0 1
2
1 8
2 7
>> 0 1 0 1 0 1 1 1
# 스위치 개수
switch_count = int(input())
# 각 스위치의 상태 (1 켜져있음 0 꺼져있음)
switch_state = list(map(int, input().split()))
switch_state.insert(0, 0)
# 학생 수
student_count = int(input())
# 학생의 성별, 학생이 받은 수
student_switch = [list(map(int, input().split())) for _ in range(student_count)]
for gender, number in student_switch:
if gender == 1: # 남학생
number_up = number
while number_up < len(switch_state):
switch_state[number_up] = 1 if switch_state[number_up] == 0 else 0
number_up += number
else: # 여학생
switch_state[number] = 1 if switch_state[number] == 0 else 0
left = number - 1
right = number + 1
while left > 0 and right < switch_count+1 and switch_state[left] == switch_state[right]:
switch_state[left] = 1 if switch_state[left] == 0 else 0
switch_state[right] = 1 if switch_state[right] == 0 else 0
left -= 1
right += 1
for num in range(1, len(switch_state)):
print(switch_state[num], end = " ")
if num % 20 == 0:print()

switch_count = int(input()) # 스위치 개수
switch_state = list(map(int, input().split())) # 각 스위치의 상태 (1 켜져있음 0 꺼져있음)
switch_state.insert(0, 0)
student_count = int(input()) # 학생 수
for student in range(student_count):
gender, number = map(int, input().split()) # 입력받으면서 스위치 변경
s = 1
if gender == 1: # 남학생
while number * s < len(switch_state):
switch_state[number * s] = abs(switch_state[number * s] - 1)
s += 1
else: # 여학생
switch_state[number] = abs(switch_state[number] - 1)
while number - s > 0 and number + s < switch_count+1 and switch_state[number - s] == switch_state[number + s]:
switch_state[number - s] = abs(switch_state[number - s] - 1)
switch_state[number + s] = abs(switch_state[number + s] - 1)
s += 1
for num in range(1, len(switch_state)):
print(switch_state[num], end = " ")
if num % 20 == 0:print()

변수를 짧게 써보기
sc = int(input()) # 스위치 개수
state = [0] + list(map(int, input().split())) # 각 스위치의 상태 (1 켜져있음 0 꺼져있음)
student = int(input()) # 학생 수
for num in range(student):
ge, sw = map(int, input().split()) # 입력받으면서 스위치 변경
s = 1
if ge == 1: # 남학생
while sw * s < sc + 1:
state[sw * s] = abs(state[sw * s] - 1)
s += 1
else: # 여학생
state[sw] = abs(state[sw] - 1)
while sw - s > 0 and sw + s < sc + 1 and state[sw - s] == state[sw + s]:
state[sw - s] = abs(state[sw - s] - 1)
state[sw + s] = abs(state[sw + s] - 1)
s += 1
for num in range(1, sc+1):
print(state[num], end = " ")
if num % 20 == 0:print()

확실히 변수를 짧게 쓰면 코드가 더 깔끔하게 느껴지기도 하고, 변수 이름을 정할때 시간을 덜 쓰기도 하네 음. 좋아