문제요약
나의 코드 및 설명
- def switching(a, b):
a, b를 변수로 하는 메서드 생성. a = 1(남학생)일 경우 스위치의 범위 내에서 받은 수의 배수에 해당하는 스위치의 상태를 변경하도록 코드를 작성하였다.
a = 2(여학생)일 경우, 받은 수의 스위치 상태를 변경하고, 좌/우의 스위치 상태를 살펴서 상태가 같다면 스위치 상태를 변경하도록 코드를 작성하였다.
스위치의 상태를 변경하기 위해 <현재 스위치의 상태 - 1> 의 절대값을 갖도록 코드를 작성하였다.
ex) <0 - 1> 의 절대값 = 1 / <1 - 1> 의 절대값 = 0 - switch_zero : 스위치 번호와 인덱스 번호를 맞추기 위해 작성하였다.
- switch, switch_status : switch에 스위치 상태를 리스트로 저장하고, switch_zero와 switch를 더해줌으로써 인덱스 번호와 스위치 번호가 일치하도록 작성하였다.
- switch_status.pop(0) : 인덱스 번호와 스위치 번호가 일치하도록 작성한 인덱스 0을 삭제한다.
def switching(a, b):
#남학생
if a == 1:
for i in range(1, len(switch_status)):
if i % b == 0:
switch_status[i] = abs(switch_status[i] - 1)
else:
continue
#여학생
elif a == 2:
switch_status[b] = abs(switch_status[b] - 1)
j = 1
while True:
if b-j == 0 or b+j == len(switch_status):
break
else:
if switch_status[b-j] == switch_status[b+j]:
switch_status[b-j] = abs(switch_status[b-j] - 1)
switch_status[b+j] = abs(switch_status[b+j] - 1)
j += 1
else:
break
n = int(input())
switch_zero = [0]
switch = list(map(int, input().split()))
switch_status = switch_zero + switch
how_many_students = int(input())
for _ in range(how_many_students):
sex, num = map(int, input().split())
switching(sex, num)
switch_status.pop(0)
for i in range(len(switch_status)):
if i != 0 and i % 20 == 0:
print()
print(switch_status[i],end =" ")
if i == len(switch_status) - 1:
print()
피드백
약 2주 반 전, 뜻대로 코드 작성이 되지 않아 헤맸었는데, 현재는 술술 작성하는데에 성공하였다. 열심히 한 만큼 실력이 향상했다고 느낄 수 있었고, 제대로 성장하고 있다는 확신을 갖게되는 좋은 계기가 되었다.
'Baekjoon > IM Level' 카테고리의 다른 글
[백준] 2564 경비원 (실버1) (0) | 2023.03.13 |
---|---|
[백준] 2628 종이자르기 (실버5) (0) | 2023.03.10 |
[백준] 2578 빙고 (실버4) (0) | 2023.03.09 |
[백준] 2605 줄세우기 (브론즈2) / insert(), extend() (0) | 2023.03.09 |
[백준] 10158 개미 (실버4) (0) | 2023.03.09 |