Maximum Odd Binary Number

제로콜라좋아요·2024년 6월 28일
0

algorithem

목록 보기
37/37

문제설명

이 문제는 최소 하나의 ‘1’을 포함하는 이진 문자열 s가 주어졌을 때, 비트를 재배열하여 만들 수 있는 가장 큰 홀수 이진수를 만드는 것입니다.

이진수를 홀수로 만들려면 마지막 비트가 ‘1’이어야 합니다.

이진수의 값이 최대가 되려면 ‘1’의 비트가 가능한 한 앞에 위치해야 합니다.

예제 1:

입력: s = “010”

출력: “001”

설명: ‘1’이 하나만 있으므로, 그 ‘1’은 마지막에 위치해야 합니다. 따라서 답은 “001”입니다.

예제 2:

입력: 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'

<내 코드의 흐름>

  1. maximumOddBinaryNumber라는 메서드를 정의합니다.
  • 이 메서드는 이진 문자열 s를 입력으로 받아 가장 큰 홀수 이진수를 문자열로 반환합니다.
  1. 주어진 이진 문자열 s에서 ‘1’의 개수를 셉니다.
  • count('1') 메서드를 사용하여 문자열 s에 포함된 ‘1’의 총 개수를 count_ones 변수에 저장합니다.
  1. 문자열 s의 전체 길이에서 ‘1’의 개수를 뺀 값을 계산하여 ‘0’의 개수를 구합니다.
  • 이를 count_zeros 변수에 저장합니다.
  1. 결과 문자열을 만듭니다:
    • ‘1’을 count_ones - 1번 반복하여 문자열의 앞부분을 채웁니다.
    • ‘0’을 count_zeros번 반복하여 문자열의 중간 부분을 채웁니다.
    • 마지막에 ‘1’을 추가하여 문자열의 끝부분을 채웁니다.
    • 이 결과 문자열은 주어진 비트들을 재배열하여 가장 큰 홀수 이진수를 만듭니다.
profile
개발자계의 제로콜라

0개의 댓글