오늘의 주제는 탐욕법(Greedy)
문제
입력과 출력
코드
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을 배치해준다.
어떻게 돌아가는지 알겠고, 개수를 세야하는 것도 알겠으나 파이썬으로 문자열을 어떻게 넣어줘야 할지 모르겠어서 헤매다가 엄청 간단명료한 코드를 발견했다..!! 그래서 첨부한다!!!
사실 오늘은 시행착오가 없었다.. 그냥 문자열을 알게된 정도?
문자열을 저런방식으로 + 와 *로 출력할 수 있단 걸 알았다.
그리고 여담이지만 티스토리로 블로그를 바꿔볼까 생각중이다..
아마 이 글이 벨로그에서 마지막 글이 될수도...?!
혹시나 옮긴다면 벨로그의 글들도 함께 재정리후 옮길 예정이다!!