[프로그래머스] 2개 이하로 다른 비트

단간단간·2024년 5월 2일
0

알고리즘 문제

목록 보기
95/106

문제 링크:

https://school.programmers.co.kr/learn/courses/30/lessons/77885

회고:

  • 풀이 방법:
    • 10진수를 2진수로 바꾼다.
    • 맨 오른쪽 숫자가 0이라면 해당 숫자만 1로 변경한다.
    • 그렇지 않다면, 오른쪽부터 왼쪽으로 01이라는 숫자를 찾고 10 으로 바꾼다.
    • 다시 10진수로 바꾼다.

python

def solution(numbers):
    result = []
    for number in numbers:
        binary_numbers = ["0"] + list(bin(number)[2:])
        length = len(binary_numbers)

        for i in range(length - 1, -1, -1):
            if binary_numbers[i] == "0":
                binary_numbers[i] = "1"
                if i != length - 1 and binary_numbers[i + 1] == "1":
                    binary_numbers[i + 1] = "0"

                break

        result.append(int("0b" + "".join(binary_numbers), 2))

    return result


if __name__ == "__main__":
    result = solution([2, 7])
    print(result)
[3, 11]
profile
simple is best

0개의 댓글