inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

4-F

4-F 질문있습니다.

해결된 질문

103

안창완

작성한 질문수 25

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

비트마스킹의 허우적 거리고 있습니다. 예시를 들고 계신 부분(영상 3:19초)에서 abc 를 비트마스킹한 값을 배열에 저장해뒀다가 완전 탐색하면서 비트마스킹(7) == 경우의 수?(7)이 같으면 이것은 가능한 경우의 수라는 뜻인가요??



1주차 2주차 3주차는 시간이 지나도 다르게 풀기도하고 하는데 이 비트마스킹은 벽을 느끼고 있습니다. 어찌해야 될가 답답하네요 ㅠㅠ

c++ 코딩-테스트

답변 2

0

큰돌

안녕하세요 창완님 ㅎㅎ

abc 를 비트마스킹한 값을 배열에 저장해뒀다가 완전 탐색하면서 비트마스킹(7) == 경우의 수?(7)이 같으면 이것은 가능한 경우의 수라는 뜻인가요??

-> 네 일부분 맞습니다. ㅎㅎ 정확히는 가능하다라는게 아니라 그냥 비교하는 부분인데요. 7 = 111을 뜻합니다. 이는 abc라는 단어를 배운 것이죠.

예를 들어 011, 001의 의미는 bc를 배웠어. c를 배웠어 를 의미하는것인데요.

이를 기반으로 나중에

int count(int mask) {
    int cnt = 0;
    for (int word : words) { 
        if(word && (word & mask) == word)cnt++; 
    }
    return cnt;
}

이 함수가 동작이 되어 -> 아 전체적으로 이만큼 배웠구나 이걸 기반으로 읽을 수 있는 단어의 최대값을 구하는 것이죠 ㅎㅎ

 

1주차 2주차 3주차는 시간이 지나도 다르게 풀기도하고 하는데 이 비트마스킹은 벽을 느끼고 있습니다. 어찌해야 될가 답답하네요 ㅠㅠ

-> 이진수가 익숙하지 않아서 그런 것 같습니다. 종이에다가 111 = 7, 11 = 3 이런식으로 스스로 이진수 테스팅을 하시면서 익숙해지면 괜찮아 지실거에요 ㅎㅎ 꾸준히만 해주세요 ㅎㅎ


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 안창완님, 질문 남겨주셔서 감사합니다.

비트마스킹은 초기에 이해하는 데 어려움이 있을 수 있지만, 이해하고 나면 매우 유용한 기법입니다. 비트마스킹을 사용하면 어떤 문제는 특히 효율적으로 풀 수 있습니다. 다음은 비트마스킹의 기본 개념과 관련하여 도움이 될 수 있는 설명입니다.

비트마스킹의 기본 개념 및 활용법

  • 비트마스킹이란? 비트마스킹은 각 개체의 포함 여부를 비트로 나타내는 방식입니다. 예를 들어, 3개의 요소가 있는 집합 {a, b, c}가 있다면 각 요소를 하나의 비트로 표현할 수 있습니다. abc를 모두 포함하는 집합을 111(2진수), 즉 7(10진수)로 나타냅니다.

  • 부분 집합 검사: 예를 들면, 주어진 경우의 수가 abc의 111(7)일 때, 현재 상태가 111인지는 각 비트를 비교하여 확인합니다. 실제로 (현재 비트마스크 & 111) == 111 과 같이 비교하면 비트마스크의 부분집합 여부를 체크할 수 있는 거죠.

  • 활용 시나리오: 모든 부분 집합을 다뤄야 하는 경우에 활용할 수 있습니다. 예를 들어, n 요소로 구성된 집합의 모든 부분 집합을 조사할 때, 0부터 2^n - 1까지의 숫자를 비트마스크로 활용하면 모든 경우를 쉽게 탐색할 수 있습니다.

비트마스킹은 예를 들어, 조합 계산에서 비트 연산으로 빠르게 부분집합을 생성하여 모든 경우의 수를 처리하게 할 수 있습니다. 이는 DFS나 BFS 같은 다른 탐색 방법보다 경우에 따라서 많은 계산 시간을 줄일 수 있습니다.

관련된 추가 선택 사항으로는, 비트마스킹 관련 질문과 답변을 찾아보고 비슷한 문제를 풀어보면서 조금씩 익숙해지는 방법이 있습니다. 아래 링크를 통해 좀 더 구체적인 비트마스킹 활용 예제를 확인해 보시는 것도 추천합니다:

  1. 비트마스킹 사용에 관한 질문입니다. – 이 게시물에서는 비트마스킹을 어떻게 잘 활용할 수 있는지에 대해 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

3-F 채점 관련 질문

0

5

0

BFS, DFS 활용이 되는 상황에서의 방향성

0

12

2

코딩살구클럽 승인

0

18

2

코딩살구클럽승인

0

15

2

코딩살구클럽 승인

0

43

2

3-D 관련 질문

0

33

2

코살구 회원가입 문의

0

40

2

코살구 로그인 문제

0

60

2

3-A 문제 풀이 관련 질문

0

51

3

2-O 질문 있습니다

0

38

2

2-T 문제에 관한 질문

0

39

2

코딩 살구 클럽 접속 및 사용방법 문의

0

58

2

안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~

0

64

2

코딩살구클럽 로그인문제

0

74

3

코딩 살구 클럽 로그인 문제

0

79

2

2-J 채점관련 질문

0

65

3

코딩 살구 클럽 Python 지원 가능 여부

0

77

1

살구클럽 아이디 없음 문제

0

76

1

1-O 코딩살구클럽 채점관련 질문

0

60

2

히든 테스트 케이스가 사라졌습니다

0

57

1

채점서버 혹시 다른 언어 지원도 가능하게 해주실 수 있나요

1

74

2

살구 클럽 채점 관련 문의(테스트 케이스)

0

66

2

1-H 문제 채점하기 오류

0

58

3

코딩살구클럽 2주차 2-L 문제 채점하기 오류

0

52

2