반응형
문제
민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB
이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다.
폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다.
출력
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
예제 입력 1 복사
XXXXXX
예제 출력 1 복사
AAAABB
예제 입력 2 복사
XX.XX
예제 출력 2 복사
BB.BB
예제 입력 3 복사
XXXX....XXX.....XX
예제 출력 3 복사
-1
예제 입력 4 복사
X
예제 출력 4 복사
-1
예제 입력 5 복사
XX.XXXXXXXXXX..XXXXXXXX...XXXXXX
예제 출력 5 복사
BB.AAAAAAAABB..AAAAAAAA...AAAABB
[소스 코드]
처음에 문제를 읽고 '.'으로 구성된 문자열이 나오면 split()할 수 있도록 정규표현식을 쓸까 생각을 했지만
replace 함수로 간단하게 해결될 것 같아서 replace로 풀어보았다.
답이 여러 개일 수 있지만 사전 순으로 했을 때 가장 앞서는 답을 출력하라고
했기에 'AAAA'로 대체하는 문장을 먼저 작성하였다.
board = input()
board = board.replace('XXXX','AAAA') #해당하는 문자열이 있을 때 해당 문자열로 대체
board = board.replace('XX','BB')
check = 0
for s in board:
if s == 'X': #만약에 남은 문자중에 'X'가 있다면 대체되지 않은 것이기에 -1 출력
print(-1)
check += 1
break
if check == 0: #check가 증가되지 않았다면 'X'가 없는 것 이므로 바뀐 문자열 출력
print(board)
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 1758 알바생 강호 (0) | 2022.03.04 |
---|---|
[python/파이썬] 백준 2217 로프 (0) | 2022.03.03 |
[python/파이썬] 백준 14916 거스름돈 (0) | 2022.02.28 |
[python/파이썬] 백준 21312 홀짝 칵테일 (0) | 2022.02.28 |
[python/파이썬] 백준 1747 소수&팰린드롬 (0) | 2022.02.25 |