[Python]백준_1343 : 폴리오미노

Alal11·2022년 9월 27일
0
post-thumbnail

출처

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


문제

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

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

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


입력

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


출력

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


예제 입출력


알고리즘 분류

  • 그리디 알고리즘

➡️문제 분석

replace 함수를 사용해서 XXXX를 AAAA로, XX를 BB로 바꿔준다.


➡️코드(⭕)

board = input()

board = board.replace("XXXX", "AAAA")		# "XXXX"를 AAAA로 바꿈
board = board.replace("XX", "BB")			# "XX"를 BB로 바꿈

if 'X' in board:							# board에 'X'가 있으면 -1 출력
    print(-1)

else:										# 'X'가 없으면 board 출력
    print(board)

➡️코드 분석

  1. board에 보드판 값 입력

  2. replace 함수를 사용해서 왼쪽부터 "XXXX"를 "AAAA"로 바꾼 다음, 바뀐 문자열 중에서 다시 "XX"를 "BB"로 바꾼다.
    "XXXX"나 "XX"만 폴리오미노로 바꿔주는 것이기 때문에 "."은 변하지 않는다.

  3. board의 남은 문자열 중에 "X"가 있으면 -1을 출력하고, 없으면 바뀐 board를 출력한다.


➡️end

replace 함수를 쓰니까 엄청 쉽게 풀 수 있었다.

0개의 댓글