문제
동전처럼 생긴 돌의 양면은 각각 흰색과 검은색으로 되어있고, 게임의 규칙은 다음과 같다.
- 뒤집기는 i번째부터 j개의 돌을 i번째 돌의 색으로 바꿔놓는다.
- 뒤집기는 가능한 돌에 대해서만 진행한다.
예시)
초기상태
| ○ | ● | ● | ○ | ○ | ● | ○ | ● | ○ | ● |
i=5, j=3인 경우 뒤집기 결과
| ○ | ● | ● | ○ | ○ | ○ | ○ | ● | ○ | ● |
초기상태에서 i=9, j=3인 경우 뒤집기 결과, 11번째는 없으므로 두개만 뒤집기가 이뤄진다.
| ○ | ● | ● | ○ | ○ | ● | ○ | ● | ○ | ○ |
입력
첫 줄에 게임의 개수 T, 다음 줄부터 게임별로 첫 줄에 N, M, 다음 줄에 N개 돌의 초기상태, 이후 M개의 줄에 걸쳐 i, j가 주어진다.
(1<=T<=50, 3<=N<=20, 1<=M<=10, 1<=i, j<=N)
출력
#과 게임번호, 빈칸에 이어 빈칸으로 구분된 돌의 상태를 출력한다.
내가 쓴 코드
T = int(input())
for t in range(T):
# N : 돌 개수, M : 진행 수
N, M = map(int, input().split())
stone = list(map(int, input().split()))
for _ in range(M):
i, j = map(int, input().split())
i -= 1
j -= 1
for n in range(i, min(N, i + j + 1)):
stone[n] = stone[i]
print(f'#{t+1}', end=' ')
print(*stone)
easy~
출력 결과
#1 0 1 1 1 0
#2 0 1 1 1 0
#3 0 1 1 1 1 1 1 1 1 1
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
| [BOJ #11650] 좌표 정렬하기 (1) | 2024.02.29 |
|---|---|
| [SWEA #20397] 돌 뒤집기 2 (0) | 2024.02.29 |
| [SWEA #11010] 배열2 - 대각 최대값 (1) | 2024.02.29 |
| [SWEA #11013] 배열1 - 3분할 (2) | 2024.02.29 |
| [SWEA #11315] 오목 판정 (3) | 2024.02.29 |