https://www.acmicpc.net/problem/1244
1. 난이도 실버 4
2. 내가 작성한 코드
출력 형식이 잘못됐다는 에러가 뜨시는 분들은 출력의 조건을 잘 확인하시길 (나도 이걸 놓쳐서 틀렸었다.)
* 스위치의 상태를 1번 스위치에서 시작하여 마지막 스위치까지 한 줄에 20개씩 출력한다.
1과 0을 변환해주기 위해 if문을 써도 괜찮지만 (value + 1) % 2 를 해주면 더 간결해진다.
n = int(input())
switch = list(map(int, input().split()))
m = int(input())
def man(x): #남자의 경우 배수의 스위치를 변환
num = x
i = 1
while x-1 < len(switch):
switch[x-1] = (switch[x-1]+1) % 2
i += 1
x = num * i
def woman(x): #여자의 경우 좌우 대칭의 경우에만 변환
switch[x] = (switch[x]+1) % 2
i = 1
while x+i < n and x-i > -1 and switch[x+i] == switch[x-i]:
switch[x+i] = (switch[x+i]+1) % 2
switch[x-i] = (switch[x-i]+1) % 2
i += 1
for i in range(m):
gender, num = map(int, input().split())
if gender == 1:
man(num)
elif gender == 2:
woman(num-1)
for j in range(1, n+1, 20):
for i in switch[j-1:j+19]:
print(i, end=" ")
print()
다른 사람의 코드와 비교해보니
출력 시에 2중 for문을 이용하지 않고 20의 배수인 경우마다 print() 를 넣어주는 게 더 좋을 것 같다.
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 1913번 달팽이(python) (0) | 2023.04.18 |
---|---|
[백준] 20436번 ZOAC 3(python) (1) | 2023.04.17 |
[백준] 4396번 지뢰 찾기(python) (0) | 2023.04.14 |
[백준] 2578번 빙고(python) (0) | 2023.04.13 |
[백준] 20546번 🐜 기적의 매매법 🐜(python) (0) | 2023.04.13 |
댓글