[99클럽 코테스터디 2기][Python/비기너] 40번째 마지막 문제: Maximum Odd Binary Number

최민지·2024년 6월 28일
0
post-thumbnail

오늘의 주제는 탐욕법(Greedy)

[Maximum Odd Binary Number]

문제

입력과 출력

코드

class Solution:
    def maximumOddBinaryNumber(self, s: str) -> str:
        # 홀= 짝+홀 이니까 적어도 하나의 자리는 1의 자리인 마지막 자리에 있어야함. 나머지는 이진수니까
        n=len(s)
        one=s.count('1')
        zero=s.count('0')

        result='1'*(one-1)+'0'*(zero)+'1'
        
        return result

알고리즘

주어진 문자열을 재배치하여 가장 큰 홀수를 만들어야 한다.
이진수에서 홀수를 만드려면 마지막 자리에는 무조건 1이 와야 한다.
따라서, 1의 개수에따라 한개만 마지막 자리에 두고 나머지 1은 제일 앞쪽에 두면 가장 큰 홀수를 만들 수 있다.
그래서 1의 개수를 세서 하나 적은 개수만큼 1을 먼저 배치하고 0의 개수만큼 0을 다음 순서에 배치한 다음 마지막 자리에는 1을 배치해준다.

[코드 참고]

어떻게 돌아가는지 알겠고, 개수를 세야하는 것도 알겠으나 파이썬으로 문자열을 어떻게 넣어줘야 할지 모르겠어서 헤매다가 엄청 간단명료한 코드를 발견했다..!! 그래서 첨부한다!!!

사실 오늘은 시행착오가 없었다.. 그냥 문자열을 알게된 정도?
문자열을 저런방식으로 + 와 *로 출력할 수 있단 걸 알았다.

그리고 여담이지만 티스토리로 블로그를 바꿔볼까 생각중이다..
아마 이 글이 벨로그에서 마지막 글이 될수도...?!
혹시나 옮긴다면 벨로그의 글들도 함께 재정리후 옮길 예정이다!!

profile
공부..일기....

0개의 댓글