[파이썬] 백준 1343 : 폴리오미노 (실버5)
1343번: 폴리오미노
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
www.acmicpc.net
문제
풀이
0. 방향성 생각
.을 기준으로 나눈다.
나누어진 문자열 중 X의 길이별로 구분한다.
1. 전체 코드
word = input()
arr = list(word.split('.'))
temp = []
goal = True
for i in arr:
if len(i)%2 == 0:
a,b = divmod(len(i),4)
s = ''
s += 'AAAA'*a
s += 'B'*b
temp.append(s)
else :
print(-1)
goal = False
break
if goal :
print('.'.join(temp))
중간에 X가 홀수개인 문자열을 만났을 경우에 -1을 출력하고 goal = False로 바꿔준다.(마지막에 출력하지 못하게)
X가 짝수인 경우에는 4로 나눈 몫과 나머지를 구한다.
4로 나눈 몫의 개수만큼 'AAAA'를 추가, 나머지는 0 또는 2이다. 나머지의 개수만큼 'B'를 추가해준다.
한 문자열에 대한 탐색이 끝났으면 temp 리스트에 추가한다.
출력은 마지막에 .으로 구분하여 출력
'Algorithm > Greedy' 카테고리의 다른 글
[파이썬] 백준 28709 : 와일드카드 괄호 문자열 (골드1) (0) | 2023.10.22 |
---|---|
[파이썬] 백준 18513 : 샘터 (골드4) (0) | 2023.10.22 |
[파이썬] 프로그래머스 : 단속카메라 (Lv.3) (0) | 2023.08.18 |
[파이썬] 프로그래머스 : 요격 시스템 (Lv.2) (0) | 2023.08.18 |
[파이썬] 프로그래머스 : 구명보트 (Lv.2) (0) | 2023.07.06 |
[파이썬] 백준 1931 : 회의실 배정 (실버1) (0) | 2023.06.06 |
[파이썬] 백준 1439 : 뒤집기 (실버5) (0) | 2023.05.31 |
댓글