4-A 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요 선생님 문제를 어떻게 접근해야 되는지 어떤 순서로 로직 작성해야되는지는 떠올랐기 했는데
문제에서 완탐 처럼 nC1, nC2...등등에서 써야 된다 하면
비트 마스킹에서 (1 << n) 요 부분 코드 22번째 줄 if(i & 1 << j) 요걸 사용한다 식으로 외워도 될가요?? 막상 비트마스킹 사용할려고 해도 어떻게 쓸지 떠올리가 않네요 ㅠㅠ
dfs,bfs, 스택 등등 공식처럼 금방 떠올라서 사용할 수 있는데 비트마스킹은 뭐랄까 다른 차원에 개념인거처럼 이걸 언제 쓰고 어떻게 응용할지 감이 안잡히네요
답변 2
0
안녕하세요 창완님 ㅎㅎ
문제에서 완탐 처럼 nC1, nC2...등등에서 써야 된다 하면
비트 마스킹에서 (1 << n) 요 부분 코드 22번째 줄 if(i & 1 << j) 요걸 사용한다
-> nC1, nC2...구할 때 보통 저렇게 코드를 구축합니다.
따라서 저거 통째로 외우시는것도 괜찮습니다만 if (i & (1 << j))는 i의 j번째 비트가 켜져 있는지 확인하는 방식이라는 등의 의미는 다 알고 계셔야 합니다.
비트마스킹은 뭐랄까 다른 차원에 개념인거처럼 이걸 언제 쓰고 어떻게 응용할지 감이 안잡히네요
-> 음... 이렇게 생각하시면 됩니다.
조합을 구한다? 또는 조합을 nC1, nC2... 너무 많이 구해야 함 -> 아 재귀함수로 만들기 귀찮네 -> 비트마스킹은 어떨까...? -> 헉 이거 n이 30이하네? 해볼까?
이렇게 드가시면 됩니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 안창완님 질문해 주셔서 감사합니다.
비트마스킹은 특히 nCk 또는 모든 부분 집합을 찾고자 할 때 유용한 기술입니다. 비트 연산을 사용하면 많은 경우의 수를 빠르게 처리할 수 있기 때문에 컴퓨터 과학 문제에서 강력한 도구로 활용됩니다. 비트마스크에서는 각 비트를 사용하여 해당 요소의 포함 여부를 나타내는 점이 특징입니다.
비트마스킹의 기본 이해
- 비트마스크 생성:
(1 << n)은n번째 비트만 켜진 숫자를 의미합니다.
- 부분집합 생성: 모든 부분집합을 생성하는 방법은 단순히 0부터
(1 << n) - 1까지 모든 숫자에 대해 비트마스크를 확인하는 것입니다.
- 부분집합의 포함 확인: 특정 비트가 켜져 있는지 확인하는 방법은
if (i & (1 << j))와 같이 합니다. 여기서i는 현재 비트마스크이고j는 확인하고자 하는 비트의 위치입니다.
비트마스킹 활용 상황
- 경우의 수 탐색: n개의 요소에 대해 전체 부분집합을 탐색하기에 유용합니다.
- 조합 문제: 조합을 계산하기 위해 비트 연산을 사용하여 부분집합을 생성할 수 있습니다.
- 중복 없는 집합 관리: 특정 조건을 만족하는 부분집합을 구하거나 확인할 때도 사용됩니다.
비트마스킹을 외울 때 중요한 것은 이러한 일반적인 패턴을 머리에 두고 여러 문제를 해결하면서 체득하는 것입니다. 알고리즘 자체보다는 해당 알고리즘이 어떤 문제에서 잘 동작하는지를 파악하는 것이 중요합니다.
관련하여 이미 좋은 논의가 이루어진 질문이 있어서 참고 URL을 드리겠습니다. 해당 게시물에서는 비트마스킹을 바탕으로 완전 탐색을 쉽게 구현하는 방법에 대해 다루고 있습니다.
- 비트마스킹 사용에 관한 질문입니다. - 비트마스킹을 어떻게 활용할 수 있는지, 특히 완전탐색을 할 때 유용한 이유를 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
교안 158페이지 문의드립니다
0
3
1
코딩살구클럽 관련 건의사항
0
21
1
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
10
1
진행 방법 질문드립니다!
0
39
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
55
2
2주차 개념#12 트리 순회
0
25
2
백준사이트가 종료된다고 합니다.
0
286
2
백준 서비스 종료
9
887
1
sk 하이닉스 코테 대비
0
367
2
3-G 최댓값 질문
0
50
1
모듈러 연산 값이 10이 아닌 경우도 있지 않나요?
0
83
2
3-I 코드 질문드립니다.
0
62
2
3-N 질문 있습니다.
0
66
2
학습방법
0
102
2
4-H 질문 있습니다 (코드 리뷰)
0
66
2
코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.
0
169
2
2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.
0
69
2
2주차 개념 #4-2. 인접행렬 질문있습니다.
0
64
2
1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.
0
51
2
조합 재귀 풀이 확인 해주시면 감사하겠습니다.
0
68
2
함수별 시간복잡도
0
73
2
3-h 질문입니다.
0
49
1
안녕하세요 선생님. 시간 복잡도 4번 질문있습니다.
0
53
2
1-I 문제 질문 드립니다.
0
76
2





