백준_1343 (폴리오미노_실버5_그리디_replace())

RostoryT·2022년 7월 3일
0

DP and Greedy

목록 보기
4/12



메모

메모한것

폴리오미노 모양은 두가지임 ( AAAA와 BB ) => 4개짜리, 2개짜리
- 중간에 홀수만큼의 xxx가 하나라도 있으면 불가함
- 제일 마지막에 if 'X' in arr: print(-1) 하면 되겟네 (하나라도 남아있음 안되니까)

' X '만 덮는다
' . '은 덮으면 안된다

덮을 수 없으면 -1

사전순으로 가장 앞서는 답을 출력?????

알고리즘

1. 왼쪽부터 X인 경우 cnt += 1 하면서 숫자를 센다
    - cnt == 2인 경우 BB로 대체
    - cnt == 4인 경우 AAAA로 대체하고 cnt = 0

2. '.'인 경우 cnt = 0

솔루션 코드 - 내가 푼

arr = list(input())
length = len(arr)
cnt = 0

for i in range(length):
    if arr[i] == 'X':
        cnt += 1
        if cnt == 2:
            arr[i-1] = arr[i] = 'B'
        if cnt == 4:
            arr[i-3] = arr[i-2] = arr[i-1] = arr[i] = 'A'
            cnt = 0
            
    elif arr[i] == '.':
        cnt = 0  
    
print(-1) if 'X' in arr else print("".join(map(str,arr)))



솔루션 코드 - 블로그1

board = input()

board = board.replace("XXXX", "AAAA")
board = board.replace("XX", "BB")

print(-1) if 'X' in board else print(board)
profile
Do My Best

0개의 댓글