Algorithm/릿코드

TIL99클럽 코테 스터디 30일차 2864. Maximum Odd Binary Number

Albosa2lol 2024. 6. 29. 07:14

https://leetcode.com/problems/maximum-odd-binary-number/description/

 

주어진 이진 문자열 s가 있습니다. 이 문자열에는 최소 하나의 '1'이 포함되어 있습니다. s의 길이를 n이라고 할 때, 길이가 n인 이진 문자열 중에서 홀수인 가장 큰 값을 찾으려고 합니다.

이진 문자열이 홀수이려면 마지막 자리가 '1'이어야 합니다. 이진 문자열의 값을 가능한 가장 큰 값으로 만들기 위해서는 '1'의 개수는 변하지 않게 하되, 최대한 앞쪽에 배치해야 합니다.

Maximum Odd Binary Number를 반환하세요.

입력 형식

  • s는 길이 n인 이진 문자열입니다.
  • s는 최소 하나의 '1'을 포함하고 있습니다.

출력 형식

  • s의 문자들을 재배치하여 만들 수 있는 최대값이면서 홀수인 이진 문자열을 반환합니다.

 

 

 

 

풀이

 

class Solution:
    def maximumOddBinaryNumber(self, s: str) -> str:
        # Step 1: '1'의 개수 세기
        count_1 = s.count('1')
        
        # Step 2: '0'의 개수 세기
        count_0 = len(s) - count_1
        
        # Step 3: 새로운 문자열 구성
        # (count_1 - 1)개의 '1'을 앞에 배치하고, '0'들을 중간에 배치하고, 마지막에 '1'을 배치
        result = '1' * (count_1 - 1) + '0' * count_0 + '1'
        
        return result