반응형
코드
x_list = list(input().split('.'))
ans = []
err = 0
for i in range(len(x_list)):
num = len(x_list[i])
if num > 0:
if num % 2 == 0:
while num != 0:
if num >= 4:
ans.append('AAAA')
num -= 4
else:
ans.append('BB')
num -= 2
else:
err = 1
break
if i != len(x_list)-1:
ans.append('.')
if err == 1:
print(-1)
else:
for i in ans:
print(i,end='')
설명
입력을 받을 때 ' . '을 기준으로 나누게 했다.
그래서 각각 나눠진 것의 길이를 구해서 만약 홀수이면 err를 1로 만들어서 -1을 출력하게 했다. 만약에 짝수이면 4보다 클 때는 ans 리스트에 AAAA를 추가해주고 그 길이 값을 4씩 빼준다. 4보다 작으면 ans 리스트에 BB를 추가해주고 길이 값을 2씩 빼줬다. 이거를 값이 0이 될 때까지 반복했다.
' . '을 기준으로 나눴기 때문에 리스트에는 ' . '이 존재하지 않는다. 따라서 for문은 한번 돌릴 때마다 리스트에 ' . '를 추가했다. 근데 마지막에는 추가하면 안되기 때문에 i의 값이 len(x_list)-1 보다 작을 때만 추가했다.
구글링을 해보니까 파이썬에는 replace 함수가 있는 걸 알게 됐다.
a = input()
a = a.replace("XXXX", "AAAA")
a = a.replace("XX", "BB")
if 'X' in a:
print(-1)
else:
print(a)
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 20115번 에너지 드링크 (1) | 2022.03.30 |
---|---|
[백준][Python] 11508번 2+1 세일 (0) | 2022.03.29 |
[백준][Python] 1758번 알바생 강호 (0) | 2022.03.28 |
[백준][Python] 13305번 주유소 (0) | 2022.03.25 |
[백준][Python] 14916번 거스름돈 (0) | 2022.03.23 |
댓글