algorithm/BitManipulation 3

[백준22251/골5] 빌런 호석 - Python

https://www.acmicpc.net/problem/22251  문제의 이미지 보고 비트연산으로 풀어야겠다고 생각했다.근데 비트연산 제대로 써본적이 없음... 일단 비트 연산자 먼저 공부했다.  1. 껐다켰다 할 수 있는 LED는 총 7개 -> 7자리 이진수로 변환하여 나타냄2. 1부터 N까지의 수를 하나씩 순회 -> 현재 K층의 숫자에서 몇개의 LED를 바꿔야하는지 계산 (XOR 연산)3. 바꾼 LED를 세서 P개 이하라면 result += 1  실패 코드# python 시간초과, pypy 2068msLED = { "0": '1110111', "1": '0010010', "2": '1011101', "3": '1011011', "4": '0111010', "5": ..

[백준17419/실4] 비트가넘쳐흘러 - Python

https://www.acmicpc.net/problem/17419    빌런호석(22251번) 풀려고 보니까 비트연산하면 좋을 거 같아서 기본 문제 먼저 풀어봤다. 처음에 냅다 while문 돌려서 풀었는데 시간초과났다...당연함 N 1,000,000이었다 조건문 뜯어보니까 이진수 1의 개수 찾는 단순한 코드였다  문제의 수식 : K - (K & ((~K) + 1))K = 10110 일 때1. (~K) = 010012. (~K) + 1 = 010103. K & ((~K) + 1) = 000104. K - (K & ((~K) + 1) = 10100 (가장 오른쪽의 1 사라짐)-> 이 연산 K가 0이 될 때까지 반복하면 1의 개수만큼 연산 시행  성공 코드# K - (K & ((~K) + 1)) # 가장 ..