Lined Notebook

[백준/그리디 알고리즘] 폴리오미노

by yjym33

문제

 

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

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

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

 

입력

 

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

 

출력

 

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

 

예제 입력 1

 

XXXXXX

 

예제 출력 1

 

AAAABB

 

문제 해설

 

"이 문제의 핵심은 replace의 정확한 사용법을 아는가?" 입니다.

 

replace 함수를 통해 XXXX는 AAAA로, XX는 BB로 변경해주면 되고, 변경 후에도 X가 남아있다면 -1을 출력하면 되는 문제입니다.

 

po = input()

# replace는 왼쪽부터 해당하는 문자열을 찾아서 치환한다.
po = po.replace('XXXX', 'AAAA') # 왼쪽부터 XXXX를 찾아서 AAAA로 치환한다.
po = po.replace('XX', 'BB') # 왼쪽부터 XX를 찾아서 BB로 치환한다.

if 'X' in po:
    print(-1) # 치환하고 난후 X가 보드판에 남아있다면 X 보드판을 폴리오미노로 덮을수 없는 것
else:
    print(po)

 

 

블로그의 정보

생각보다 실천을

yjym33

활동하기