처음 이 문제에 접근한 방식은
코드로 작성했을 땐 다음과 같이 25점의 부분점수만을 받았다.
import sys
from collections import Counter
input = sys.stdin.readline
S = input().rstrip()
counter = Counter(S)
zero_cnt, one_cnt = counter['0'], counter['1']
arr = [0] * (zero_cnt//2) + [1] * (one_cnt//2)
print(*arr, sep='')
첫번째 시도 때 접근했던 방식은 Counter
모듈을 이용해 0과 1의 개수를 세줬고,
사전순으로 정렬함은 0이 앞에 와야 하므로 0의 절반의 개수만큼 앞에, 1의 절반의 개수만큼 뒤에 위치하도록 했다.
하지만 문자열의 순서를 유지하며 절반을 제거해야하므로 위의 내 풀이는 제대로 틀렸다!!!
import sys
input = sys.stdin.readline
S = list(input().rstrip())
zero_cnt, one_cnt = S.count('0') // 2, S.count('1') // 2
for _ in range(zero_cnt):
S.pop(-S[::-1].index('0') - 1)
for _ in range(one_cnt):
S.pop(S.index('1'))
print(''.join(S))
pop()
함수를 통해 1은 앞에서부터, 0은 뒤에서부터 제거해주도록 인덱스를 각각 구해 인자로 넘겼다.
import sys
input = sys.stdin.readline
S = list(input().rstrip())
zero_cnt, one_cnt = S.count('0') // 2, S.count('1') // 2
for _ in range(zero_cnt):
S.pop(-S[::-1].index('0') - 1)
for _ in range(one_cnt):
S.pop(S.index('1'))
print(''.join(S))
▶️ 문제의 예외 조건 잘 확인하기
▶️ pop(index)
활용