이 문제는 최소 하나의 ‘1’을 포함하는 이진 문자열 s가 주어졌을 때, 비트를 재배열하여 만들 수 있는 가장 큰 홀수 이진수를 만드는 것입니다.
이진수를 홀수로 만들려면 마지막 비트가 ‘1’이어야 합니다.
이진수의 값이 최대가 되려면 ‘1’의 비트가 가능한 한 앞에 위치해야 합니다.
입력: s = “010”
출력: “001”
설명: ‘1’이 하나만 있으므로, 그 ‘1’은 마지막에 위치해야 합니다. 따라서 답은 “001”입니다.
입력: s = “0101”
출력: “1001”
설명: ‘1’ 중 하나는 마지막에 위치해야 합니다. 남은 비트들로 만들 수 있는 최대 숫자는 “100”입니다. 따라서 답은 “1001”입니다.
• 1 <= s.length <= 100
• s는 ‘0’과 ‘1’로만 이루어져 있습니다.
• s는 최소 하나의 ‘1’을 포함합니다.
class Solution:
def maximumOddBinaryNumber(self, s: str) -> str:
count_ones = s.count('1')
count_zeros = len(s) - count_ones
return '1' * (count_ones - 1) + '0' * count_zeros + '1'