민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB
이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다.
폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오.
첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다.
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
간단한 나누기 연산으로 해결할 수 있다.
주의할 점은 .
이 포함된 경우와 연속길이가 홀수인 경우!
두 가지만 주의하면 깔끔하게 풀이할 수 있다.
.
이 포함된 경우가 있을 수 있기 때문에, .
을 기준으로 쪼개서 리스트화한다. 이렇게 하면 .
이 포함되지 않은 경우에는 길이가 1인 리스트가 생성된다..
으로 해서 출력하면 출력 형식에 맞는 결과를 출력할 수 있다.# 길이가 홀수면 불가능
polio = input()
array = list(polio.split('.'))
for i in range(len(array)):
p = len(array[i])
if p % 2 == 1:
print(-1)
quit()
else:
a_cnt = (p//4) * 4
b_cnt = (p-a_cnt)//2 * 2
array[i] = 'A'*a_cnt + 'B'*b_cnt
print(*array, sep='.')
간단하게 풀리는 문제였는데 어렵게 생각하다가 시간을 오래 잡아먹었다.