주어진 것
두개의 폴리오미노 AAAA, BB
알고리즘
'X'와 '.'으로 주어진 보드 판을 덮는다.
출력
폴리오미노로 덮은 보드판을 출력한다.
X를 마주하면 stack에 넣고, .을 마주하면 stack에 있는 board를 폴리오미노로 덮는다. stack에 들어있는 board의 갯수가 2의 배수가 아니라면 폴리오미노로 덮을 수 없는 입력이니 -1을 출력, 덮을 수 있다면 덮어서 answer에 저장
for 문으로 board를 돌리면, 마지막 케이스에 대한 처리를 따로 해줘야하는 경우가 생길 수도 있다.
def process_stack(stack, answer):
if len(stack) % 2 != 0:
print(-1)
exit()
answer.append('AAAA' * (len(stack) // 4))
if len(stack) % 4 != 0:
answer.append('BB')
board = list(input())
answer = []
stack = []
for letter in board:
if letter == 'X':
stack.append(letter)
else:
if stack:
process_stack(stack, answer)
stack = []
answer.append('.')
if stack:
process_stack(stack, answer)
print(''.join(answer))