길이가 2 이상인 이진 문자열 s가 있다고 가정합니다. 0과 1이 번갈아 나타나도록 s를 재배열할 수 있는지 확인해야 합니다.
따라서 입력이 s ="1000111"과 같으면 s에서 "1010101"을 형성할 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- one_count :=이진 문자열 s에서 1의 개수
- zero_count :=이진 문자열 s의 0 개수
- s의 크기가 짝수이면
- one_count가 zero_count와 같으면 true를 반환하고 그렇지 않으면 false를 반환
- |one_count - zero_count|인 경우 true를 반환합니다. 1과 동일하지 않으면 거짓
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(s): one_count = s.count('1') zero_count = s.count('0') if len(s) % 2 == 0 : return (one_count == zero_count) return abs(one_count - zero_count) == 1 s = "1000111" print(solve(s))
입력
"1000111"
출력
True