티스토리 뷰

728x90

https://www.acmicpc.net/problem/20310

 

20310번: 타노스

어느 날, 타노스는 0과 1로 이루어진 문자열 $S$를 보았다. 신기하게도, $S$가 포함하는 0의 개수와 $S$가 포함하는 1의 개수는 모두 짝수라고 한다. 갑자기 심술이 난 타노스는 $S$를 구성하는 문자

www.acmicpc.net

 

결과가 최솟값으로 출력되기 위해선

0이 앞으로, 1이 뒤로 가는 형식으로 나와야 최솟값이 나옵니다.

그렇기 때문에 먼저  '>' 방향으로 제거할 1을 체크한 뒤,

                           '<' 방향으로 제거할 0을 체크합니다.

이렇게 나온 결과물을 갖고 문자열을 합치면 됩니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
S = input()
cnt_0, cnt_1 = S.count('0')//2, S.count('1')//2
chk = [True for _ in range(len(S))]
res = ""
for i in range(len(S)):
    if cnt_1 > 0 and S[i] == '1':
        cnt_1 -= 1
        chk[i] = False
for i in range(len(S)-1, -1, -1):
    if cnt_0 > 0 and S[i] == '0':
        cnt_0 -= 1
        chk[i] = False
for i in enumerate(chk):
    if i[1]:
        res += S[i[0]]
print(res)
cs

 

 

 

댓글