1. 문제
https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
2. 풀이
import sys
input = sys.stdin.readline
# n : 스위치 개수
n = int(input())
# n_l : 스위치 배열
n_l = list(map(int, input().split()))
# p_cnt : 사람 수
p_cnt = int(input())
for i in range(p_cnt):
# print(n_l)
s, s_num = map(int, input().split())
if s == 1:
c_num = [s_num * (j + 1) for j in range(n//s_num)]
# print(c_num)
for j in c_num:
if n_l[j - 1] == 0:
n_l[j - 1] = 1
elif n_l[j - 1] == 1:
n_l[j - 1] = 0
elif s == 2:
s_num -= 1
c_num = [s_num]
be_s = s_num - 1
af_s = s_num + 1
while True:
if be_s < 0 or af_s >= n or n_l[be_s] != n_l[af_s]:
break
c_num.append(be_s)
c_num.append(af_s)
be_s -= 1
af_s += 1
# print(c_num)
for j in c_num:
if n_l[j] == 0:
n_l[j] = 1
elif n_l[j] == 1:
n_l[j] = 0
result = ""
output = True
for i, k in enumerate(n_l):
output = True
result += "{} ".format(k)
if (i + 1) % 20 == 0:
print(result.strip())
result = ""
output = False
if output:
print(result.strip())
3. 후기
- 문제는 복잡한 프로세스를 구현하는 종류로 문제에 나와있는 설명대로 구현하였으며, 다만 출력과정에서 문제에 나와있는 출력시 한 줄에 20개씩 출력하라는 참고 사항을 못보아서 한참 헤맸다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 베스트셀러(1302) (0) | 2023.01.21 |
---|---|
(Python)백준 코딩테스트 연습 - 링(3036) (0) | 2023.01.19 |
(Python)백준 코딩테스트 연습 - 기타줄(1049) (0) | 2023.01.17 |
(Python)백준 코딩테스트 연습 - 카드(11652) (0) | 2023.01.17 |
(Python)백준 코딩테스트 연습 - 국영수(10825) (0) | 2023.01.16 |