알고리즘/Greedy

백준 1343번 : 폴리오미노 (greedy)

Aytekin 2022. 5. 10. 17:13
728x90

1. 먼저 '.' 을 기준으로 입력값을 구분할 수 있도록 split함수를 사용하였다.

 

2. 구분된 리스트의 각 값들의 길이가 홀수이면 -1을 출력할 수 있도록 해준다.

이 때, flag변수를 설정해서 구분하였다.

 

3. 먼저 'AAAA'를 4로 나눈 몫만큼 곱해주고 나머지에 2로 나눈 몫만큼 'BB'에 곱해준다.

사실 지금 생각해보니 2로 나눈 몫은 항상 1이 될 수 밖에 없다. (결과는 같다.)

 

참고 print함수를 사용해서 list를 차례대로 출력하려고 할 때 *를 리스트 앞에 붙여주면 띄어쓰지 않고 출력해준다. 이 때 sep, end같은 print내부 옵션도 당연히 사용 가능하다. 

 

 

# 1343번 : 폴리오미노

li = input().split('.')

ans = []

flag = 0
for i in li:
    if len(i) % 2 :
        flag = 1
        
if flag:
    print(-1)
else:
    for i in li:
        a = len(i)//4
        b = (len(i)-(4*a))//2
        ans.append('AAAA'*a + 'BB'*b) 

print(*ans,sep=('.'))
728x90