비트마스킹

https://www.acmicpc.net/problem/2234 2234번: 성곽 첫째 줄에 두 정수 N, M이 주어진다. 다음 M개의 줄에는 N개의 정수로 벽에 대한 정보가 주어진다. 벽에 대한 정보는 한 정수로 주어지는데, 서쪽에 벽이 있을 때는 1을, 북쪽에 벽이 있을 때는 2를, www.acmicpc.net 1. Logic 좌상우하 순서대로 1, 2, 4, 8이라는 값을 가지고 있기 때문에 이는 비트마스킹으로 쉽게 표현할 수 있다. 13을 예시로 들어보면 13을 2진수로 표현하게 되면 1101이다. 즉 13인 방에서 갈수있는 방향을 왼쪽 오른쪽 아래 총 3가지 방향만 갈 수 있다. BFS를 돌 때 dir방향인 dy[4] dx[4]배열을 만들어 놓는데 이와 같은 방향일 때 내가 있는 공간에서 막혀..
https://www.acmicpc.net/problem/1052 1052번: 물병 지민이는 N개의 물병을 가지고 있다. 각 물병에는 물을 무한대로 부을 수 있다. 처음에 모든 물병에는 물이 1리터씩 들어있다. 지민이는 이 물병을 또 다른 장소로 옮기려고 한다. 지민이는 한 번 www.acmicpc.net 1. Logic 여기서 비트는 한 물병으로 얼마나 물이 모였는지를 나타낸다. 항상 물은 똑같은 양끼리 합칠 수 있고 1부터 시작하기 때문에 1 > 2 > 4 > 8 > 16 등등 이렇게 2의 제곱수로 늘어나게 된다. 즉 1의 갯수는 물이 담긴 물병의 갯수를 의미한다. 테스트케이스인 13, 2를 예시로 들어보면 13을 2진수로 변환하면 1101이다. (8 + 4 + 1) 1이 먼저 나오는 위치는 0번째이..
https://www.acmicpc.net/problem/1497 1497번: 기타콘서트 첫째 줄에 기타의 개수 N과 곡의 개수 M이 주어진다. N은 10보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 기타의 이름과 기타가 연주할 수 있는 곡의 www.acmicpc.net 1. Logic 입력 자체가 n = 1; } return cnt; } void solve(int idx, long long bit, int cnt) { int bitToSong = countBit(bit); if(bitToSong > maxCnt) { maxCnt = bitToSong; ans = cnt; } else if(bitToSong == maxCnt) { ans = min(ans,..
보글보글소다
'비트마스킹' 태그의 글 목록