본문 바로가기

비트마스킹17

[백준] 11811번 : 데스스타 (python) 11811번 : 데스스타 문제) 젊은 제다이 이반의 임무는 데스스타에 침투하여 파괴하는 일이다. 데스스타를 파괴하기 위해서는 길이 N의 음이 아닌 정수 수열 ai가 필요하다. 그러나 이반은 이 수열을 가지고 있지 않다. 대신 그에게는 오랜 친구 다스 베이더에게 받은 쪽지가 하나 있다. 이 쪽지에는 그 수열이 만족해야 하는 조건이 적혀 있다. 이 쪽지에는 크기 N의 정사각 행렬이 있는데, i번째 행 j번째 열에 적힌 숫자는 ai와 aj에 비트연산 and를 수행한 결과값이다. 하지만 안타깝게도 광선검에 의해 쪽지가 손상되었고 이반은 행렬의 주 대각선에 있는 숫자를 읽을 수 없게 되었다. 원래 배열을 재구성하여 임무를 수행해야 하는 이반을 도와주자. 답은 유일하지 않을 수 있지만, 항상 존재하도록 주어진다. .. 2023. 8. 3.
[백준] 16508번 : 전공책 (C++) 16508번 : 전공책 문제) 곧 졸업을 앞둔 민호는 대학교 생활 동안 구매만 해놓고 한 번도 펴보지 않은 전공책에 먼지가 쌓여 있는 것을 보고는, 이 책들을 어떻게 처리해야 할지 고민 중이다. 열심히 고민한 끝에 민호는 결국 전공책을 모두 버리기로 마음먹었다. 하지만 그냥 버리기엔 심심한 민호는 전공책 제목에 있는 글자들을 오려서 단어 만들기 놀이를 하려고 한다. 단어 만들기 놀이는 아래 예시와 같다. 1번 책 : COMPUTERARCHITECTURE (35,000원) 2번 책 : ALGORITHM (47,000원) 3번 책 : NETWORK (43,000원) 4번 책 : OPERATINGSYSTEM (40,000원) 만약 민호가 만들고 싶은 단어가 ALMIGHTY라고 하면, 위 4개의 책 중, 1번 .. 2023. 8. 3.
[백준] 17419번 : 비트가 넘쳐흘러 (C++) 17419번 : 비트가 넘쳐흘러 문제) 🎶 DJ욱제는 비트에 몸을 맡기는 중이다. 🎶 DJ욱제는 비트에 심취한 나머지, 비트를 비틀어 제껴버리는 문제를 내 버렸다! N자리 이진수 K가 주어진다. K가 0이 아닐 때까지 아래의 연산을 적용했을 때, 연산이 일어나는 횟수를 구하시오. K = K-(K&((~K)+1)) 아래는 위의 연산에 사용된 연산자에 대한 설명이다. '+'는 산술 더하기 연산이다. (5 + 2 = 7) '-'는 산술 빼기 연산이다. (5 - 2 = 3) '&'는 비트 AND 연산이다. (1101 & 0111 = 0101) '~'는 비트 NOT 연산이다. 켜진 비트를 끄고, 꺼진 비트를 켜는 연산이다. (~1101 = 0010) 입력 : 첫째 줄에 N이 주어진다. 둘째 줄에 N자리 이진수 K.. 2023. 8. 2.
[백준] 1740번 : 거듭제곱 (C++) 1740번 : 거듭제곱 문제) 3의 제곱수를 생각하자. 3의 0제곱, 3의 1제곱, 3의 2제곱, ... 은 순서대로 1, 3, 9, 27, ... 이 된다. 이를 바탕으로, 한 개 이상의 서로 다른 3의 제곱수의 합으로 표현되는 수를 생각할 수 있다. 예를 들어 30은 27과 3의 합이므로, 이러한 수에 포함된다. 한 개 이상의 서로 다른 3의 제곱수의 합으로 표현되는 N번째로 작은 수를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 N이 주어진다. N은 500,000,000,000 이하의 자연수이다. 출력 : 첫째 줄에 한 개 이상의 서로 다른 3의 제곱수의 합으로 표현되는 N번째로 작은 수를 출력한다. 풀이) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 2023. 8. 2.