😎풀이

  1. s에서 1의 수를 확인
  2. 가장 오른쪽 수는 항상 1로 고정
  3. 그 외의 수 중 왼쪽부터 먼저 1로 모두 채우고 나머지는 0으로 채움
  4. 결과 문자 배열을 문자열 형태로 변환한 값이 변환 가능한 2진수 중 가장 큰 홀수 값
function maximumOddBinaryNumber(s: string): string {
    let countOne = 0
    for(const char of s) {
        if(char === '1') {
            countOne++
        }
    }
    const splitted = [...s]
    countOne--
    splitted[splitted.length - 1] = '1'
    for(let i = 0; i < splitted.length - 1; i++) {
        if(countOne) {
            splitted[i] = '1'
            countOne--
        } else {
            splitted[i] = '0'
        }
    }
    return splitted.join('')
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글