문제
https://www.acmicpc.net/problem/1343
1343번: 폴리오미노
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
www.acmicpc.net
풀이
ss = input().split('.') # .으로 나눠줌
sol_str = ''
for x in ss:
if len(x) % 2 == 1: # 홀수면 덮을 수 없음
print(-1)
break
while len(x) >= 4: # 4보다 크면 AAAA 덮기
sol_str+='AAAA'
x = x[4:]
if len(x) == 2: # 2가 남았으면 BB 덮기
sol_str+='BB'
x = x[2:]
sol_str+='.' # 나눠준 . 붙이기
else:
print(sol_str[:-1]) # 성공이면 마지막 . 제외하고 출력
- 입력받은 문자열을 . 으로 나눠준다.
- 짝수일때만 덮을 수 있으므로 홀수일때는 -1 출력
- 4 이상일때 동안 AAAA 덮기
- 2가 남았으면 BB 덮기
- 나눠준 . 붙이기
- 성공이면 마지막 . 제외하고 출력
다른사람 풀이
ss = input()
ss = ss.replace('XXXX','AAAA')
ss = ss.replace('XX','BB')
if 'X' in ss:
print(-1)
else:
print(ss)
replace 로 치환해서 X가 남아있으면 -1 출력, 없으면 치환한 문자열을 출력해준다.
// 너무 돌아돌아 풀었다.. ㅠㅠ
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #1325 - 효율적인 해킹 (0) | 2022.03.20 |
---|---|
[Python] 백준 #20546 - 기적의 매매법 (0) | 2022.03.17 |
[Python] 백준 #9184 - 신나는 함수 실행 (0) | 2022.01.19 |
[Python] 백준 #10816 - 숫자 카드 2 (0) | 2022.01.18 |
[Python] 백준 #14889 - 스타트와 링크 (0) | 2022.01.18 |