[백준1343/Python] 폴리오미노

    반응형
    SMALL
    반응형

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

     

    문제

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

    풀이

     '.'을 기준으로 문자열 나눠서 리스트 저장

    XXXX -> AAAA, XX -> BB (문자열 치환(replace())함수 사용)

    result에 X 하나라도 있으면  -1 출력

    코드

    n = input().split('.')  # 입력받은 문자열을 '.' 기준으로 나누어 리스트로 저장
    
    a = [x.replace('XXXX', 'AAAA').replace('XX', 'BB') for x in n]  # 리스트의 각 요소에 replace 적용
    result = '.'.join(a)
    
    if 'X' in result :
        print(-1)
    else:
        print(result)

    --

     replace().. 기억..replace ,,~

     

    반응형
    LIST

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

    [백준2720/Python] 세탁소 사장 동혁  (0) 2025.01.27
    [백준11047/Python] 동전 0  (0) 2025.01.27
    [백준11508/Python] 2+1 세일  (0) 2025.01.27
    [백준14916/Python] 거스름돈  (0) 2025.01.27
    [백준20300/Python] 서강근육맨  (2) 2025.01.27

    댓글