본문 바로가기

백준 문풀

[Python] 그리디 - 1343.폴리오미노(실5)

https://www.acmicpc.net/problem/1343

 

1343번: 폴리오미노

첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.

www.acmicpc.net

 

>>문제 포인트

- '.'을 구분자로 연속된 X의 뭉태기들을 나눔

- 만약 연속된 X의 개수가 홀수라면 -1

=> 'AAAA'(4) / 'BB'(2) 길이가 모두 짝수이므로 만들 수 있는 길이 조합은 짝수밖에 없음

- X의 개수를 4로 나눈 몫만큼 'AAAA'추가

- X의 개수를 4로 나눈 나머지(2or 0) 를 2로 나눈 몫만큼 'BB'추가

 

#1343

k= input()
list_word= list(k.split('.'))

result=''
flag=0

for i in list_word:
  if len(i)%2!=0:
    flag=1
    break
  result+='AAAA'*(len(i)//4)
  result+='BB'*((len(i)%4)//2)  
  result+='.'
 
if flag==1:
  print(-1)
else:
  print(result[:-1])