티스토리 뷰
728x90
https://www.acmicpc.net/problem/1343
- 해설 :
X와 "." 으로 이루어진 문자열을 'AAAA'와 'BB'로 치환할 수 있는지 찾는 문제이다. 치환할 수 있다면 사전순으로 가장 앞서는 치환값을 출력하면 된다.
- 풀이 :
주어진 문자열을 탐색하며 X를 만났을 때 연속되는 X의 개수를 센다. X의 개수가 홀수개라면 -1을 리턴하고 아니라면 AAAA 또는 BB로 치환한다. AAAA가 들어갈 수 있을 때 우선적으로 넣어줘야 사전순으로 앞서는 답을 도출할 수 있다.
- 소스코드 :
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
|
import sys
input = sys.stdin.readline
if __name__ == "__main__":
board = input()
answer = []
cnt = 0
flag = True
for key in board:
if key == 'X':
cnt +=1
else:
if cnt % 2 == 1:
print(-1)
exit()
while cnt >= 2:
if cnt >= 4:
answer.append('AAAA')
cnt -= 4
elif cnt >= 2:
answer.append('BB')
cnt -= 2
answer.append('.')
del answer[-1]
print(''.join(answer))
|
cs |
320x100
'Algorithm > Implementation' 카테고리의 다른 글
(Python) - BOJ(1697번) : 숨바꼭질 (0) | 2022.01.27 |
---|---|
(Python) - BOJ(1620번) : 나는야 포켓몬 마스터 이다솜 (0) | 2022.01.27 |
(Python) - BOJ(1138번) : 한 줄로 서기 (0) | 2022.01.25 |
(Python) - BOJ(1043번) : 거짓말 (0) | 2022.01.25 |
(Python) - BOJ(1026번) : 보물 (0) | 2022.01.24 |
댓글
© 2022 WonSeok, All rights reserved