본문 바로가기
Algorithm

[Greedy/그리디] 백준 1343 폴리오미노 - 파이썬(Python)

by jangThang 2022. 9. 6.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    1343번: 폴리오미노

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

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     .와 X로 이루어진 문자열이 주어집니다. XXXX는 AAAA로 XX는 BB로 바꾸며, X가 홀수로 남게 되면 -1를 출력합니다.

     

    2022.01.26 - [Algorithm] - [Algorithm] 탐욕적인 그리디 알고리즘, 직관적이고 쉬운 문제해결

     

    [Algorithm] 탐욕적인 그리디 알고리즘, 직관적이고 쉬운 문제해결

     경주마들을 자세히 보면, 양쪽 시야를 차단하는 안대를 끼고 있습니다. 이를 '차안대' 라고 합니다. 말의 눈은 양 옆에 달려 있어 시야가 '350도'나 됩니다. 자기 자신 빼곤 다 보이기 때문에, 다

    star7sss.tistory.com

     사전순으로 가장 앞서는 답을 출력해야 하므로, X가 4개 이상 연달아 있으면 무조건 AAAA로 먼저 변환해야 합니다.

     

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    # 입력
    board = input().rstrip() + '.'
    
    # 덮어쓰기
    new_board = ''
    x_cnt = 0
    for s in board:
        # X이면 카운트 +1
        if s == 'X':
            x_cnt += 1
    
        # .이면 정산 후 반영
        else:
            if x_cnt % 2 == 1:
                print(-1)
                break
    
            new_board += 'AAAA' * (x_cnt//4)
            x_cnt %= 4
    
            new_board += 'BB' * (x_cnt//2)
            x_cnt = 0
            new_board += '.'
    
    else:
        print(new_board[:-1])
    

     맨 뒤에 .을 추가해서, 맨 마지막에 남은 X의 개수도 정산합니다. 그리고 맨 마지막 .은 빼고 출력합니다.

     

    star가 되고나서 Tistory

    반응형

    댓글