문제


민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB

이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다.

폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오.

 

입력

 

첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 500이다.

출력

 

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

예제 입력과 출력

 

 

알고리즘 분류


그리디 알고리즘

 

정답

 

n=input()
a=0
i=0

while True:
    if i >= len(n):
        break
    
    if n[i:i+4] == 'XXXX':
        i=i+4
        n=n.replace('X','A',4)
    elif n[i:i+2] == 'XX':
        i=i+2
        n=n.replace('X','B',2)
    elif n[i] == '.':
        i=i+1
    else:
        n=-1
        break
        
print(n)

 


백준 알고리즘 1343번 : www.acmicpc.net/problem/1343

 

1343번: 폴리오미노

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

www.acmicpc.net

 

+ Recent posts