Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DevDave

[Algorithm] boj1343(greedy)폴리오미노 본문

Algorithm

[Algorithm] boj1343(greedy)폴리오미노

Dave Song 2022. 6. 7. 11:01
문제

민식이는 다음과 같은 폴리오미노 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

<Code>

import sys

def main():

    a = sys.stdin.readline()
    ans = ''
    i=0

    while i < len(a):
        if a[i:i+4] == 'XXXX':
            ans += 'AAAA'
            i+=4
        elif a[i:i+2] == 'XX':
            ans += 'BB'
            i+=2
        elif a[i] == '.':
            ans += '.'
            i+=1
        else:
            break



    if len(a) -1 == len(ans):
        print(ans)

    else:
        print(-1)

main()

'Algorithm' 카테고리의 다른 글

[Algorithm]Dijkstra  (0) 2022.06.09
[Algorithm]boj1235(sil4)implement  (0) 2022.06.09
[Algorithm]Boj1417(greedy)국회의원선거  (0) 2022.06.08
[Algorithm]boj1010(dp)다리놓기  (0) 2022.06.07
[Algorithm] BOJ11059(brute force)좋은구간  (0) 2022.06.07