Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Archives
Today
Total
관리 메뉴

잡동사니 블로그

[백준] 1343 - 폴리오미노 (python) 본문

Python/백준

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

코딩부대찌개 2023. 2. 10. 01:41
 

1343번: 폴리오미노

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

www.acmicpc.net

문제

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

 

풀이

 
a=input()
ans=''
b=0
flag=0
cnt = 0
if len(a) != 1 :
    for i in a :
        cnt +=1
        if i == '.' and flag == 0 :
            ans+=i
        if i =='X':
            b += 1
            flag=1
        if i == '.' and flag == 1 :
            if b % 2 != 0 :
                ans = -1
                break
            t = b//4
            q = (b%4)//2
            ans += ('AAAA'*t)+('BB'*q)
            ans += i
            flag = 0
            b=0
        if i != '.' and len(a) == cnt :
            t = b//4
            q = (b%4)//2
            ans += ('AAAA'*t)+('BB'*q)
            if b % 2 != 0 :
                ans = -1
else :
    if a == '.':
        print(a)
    else :
        print(-1)
print(ans)

a를 입력 받았을 때 길이가 1인지 아닌지 부터 판별 하였다.

그리고 나서 . 이면 . 그대로 출력을 해야하며 A일 경우엔 -1을 출력해야 하기 때문에 if len(a) -> else -> if a == '.' 이런식으로 구분 하였다.

그리고 길이가 1이 아닐경우엔 X의 개수를 더해서 .을 만나면 X의 개수를 카운트 하여 4로 나눈 몫 나머지는 2로 나눈 몫을 계산하여 ans라는 변수에 추가하였다. 

.같은 경우는 반복문에서 나올 때 마다 .을 ans 변수에 계속 추가하였고, 

카운트한 변수(cnt)가 홀수일 경우 break를 하여 -1를 출력하였다.

 

코드가 좀 난잡한거 같아서 다른사람의 풀이도 보았는데

문자열을 replace로 간단한 문제였던걸 확인했었다.

ans = input()

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

if 'X' in ans:
    print(-1)

else:
    print(ans)