728x90
문제
민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB
이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다.
폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다.
출력
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
코드
내가 푼 코드
import sys
input = sys.stdin.readline
B = input().rstrip()
i, cnt = 0, 0
F = []
while i < len(B):
#연속된 문자가 XXXX이면 AAAA로 대체
if B[i:i + 4] == "XXXX":
F.append("AAAA")
i += 4
#연속된 문자가 XX이면 BB로 대체
elif B[i:i + 2] == "XX":
F.append("BB")
i += 2
#문자가 .이면 그대로
elif B[i] == ".":
F.append(".")
i += 1
#문자가 대체가 안되면 멈춤
else:
cnt += 1
break
print(*F, sep='') if cnt == 0 else print(-1)
replace() 사용 풀이
board = input()
#replace() 함수를 이용하여 문자열 치환
board = board.replace('XXXX', 'AAAA')
board = board.replace('XX', 'BB')
if 'X' in board: print(-1)
else: print(board)
정리할 내용
replace() 함수
- 왼쪽부터 해당하는 문자열을 찾아 치환해주는 함수
- 무언가 치환/대체하는 문제가 나올 때 생각하기
끝!!
[백준 1343번] 을 정리한 내용입니다.