본문 바로가기
백준/그리디

[백준] #1343 폴리노미오 (python)

by 똥먹는낙타 2022. 2. 16.
728x90
반응형

1343번: 폴리오미노 (acmicpc.net)

 

1343번: 폴리오미노

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

www.acmicpc.net

 

문제

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

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

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

입력

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

출력

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

 

예제 입력1

XXXXXX

예제 출력1

AAAABB

 

예제 입력2

XXXX....XXX.....XX

예제 출력2

-1

 


 

# Code

s = input()

s = s.replace('XXXX', 'AAAA')
s = s.replace('XX', 'BB')

if 'X' in s:
    print(-1)
else:
    print(s)

# Comment

처음에 생각한건 '.' 으로 구분해서 입력 받으면서 홀수이면 -1 출력, 짝수이면 경우 따져가면서 'AAAA'나 'BB'로 대체 하는 식으로 짜려고 했는데 어떻게 해야 효율적인지 모르겠어서 고민하다가 결국 다른 코드를 참고했다. 

근데 replace 라는걸 쓰면 정말 쉽게 풀 수 있다는 것을 깨달았다... ㅎㅎ

문자열을 s에 입력받고 'XXXX' 가 나오면 'AAAA', 'XX' 가 나오면 'BB' 로 바꿔준다. 이때, s에서 남아 있는 'X' 가 있다면 이건 'X'가 홀수개 였다는 뜻이므로(즉, 완전히 다 문자로 대체할 수 없으므로) -1을 출력한다.

728x90
반응형

'백준 > 그리디' 카테고리의 다른 글

[백준] #13305 주유소 (python)  (3) 2022.02.18
[백준] #2217 로프 (python)  (0) 2022.02.18
[백준] #1439 뒤집기 (python)  (0) 2022.02.16
[백준] #14916 거스름돈 (python)  (0) 2022.02.15
[백준] #21313 문어 (python)  (0) 2022.02.15

댓글