어느 날, 타노스는 0과 1로 이루어진 문자열
를 보았다. 신기하게도, 가 포함하는 0의 개수와 가 포함하는 1의 개수는 모두 짝수라고 한다.
갑자기 심술이 난 타노스는 를 구성하는 문자 중 절반의 0과 절반의 1을 제거하여 새로운 문자열 를 만들고자 한다. 로 가능한 문자열 중 사전순으로 가장 빠른 것을 구하시오.
문자열 가 주어진다.
로 가능한 문자열 중 사전순으로 가장 빠른 것을 출력한다.
의 길이는 4의 배수이다.
의 홀수 번째 문자는 1, 짝수 번째 문자는 0이다.
추가적인 제약 조건이 없다.
처음엔 문제를 잘 이해하지 못하여 문자의 자리 이동이 가능하다고 이해했었다.
# 타노스
import sys
s = sys.stdin.readline().rstrip()
n = s.count('0')
m = s.count('1')
for i in range(n//2):
print('0', end='')
for j in range(m//2):
print('1', end='')
이후 숫자의 위치 변경이 되지 않는다는 것을 알고, 앞에서부터 1을 절반 없애고, 뒤에서부터 0을 절반 없애는 방식을 생각하였다.
# 타노스
import sys
s = list(sys.stdin.readline().rstrip())
n = s.count('0')
m = s.count('1')
#앞에서부터 1을 갯수의 절반 만큼 지우고, 뒤에서부터 0을 갯수의 절반 만큼 지우자.
# 리스트를 역순하는 가장 쉬운 방법 [::-1]
check = 0
for i in s:
if check == m//2:
break
if i == '1':
s.remove(i)
check += 1
check = 0
s = s[::-1]
for i in s:
if check == n//2:
break
if i == '0':
s.remove(i)
check += 1
for i in s[::-1]:
print(i, end='')
뒤에서 부터 0을 없애기 위해 list를 역순해야했는데 이때 reverse 또는 reversed를 사용하면 type이 바뀌기 때문에 을 사용하는 것이 더 바람직하다.