코딩

[SWEA 1일차] Bitmap

코재1 2022. 1. 18. 14:09

어쩌다보니 삼성에서 진행하는 알고리즘 캠프를 접할 기회가 생겼다. 오늘 1일차로 오리엔테이션과 Bitmap을 관련하여서 배웠는데 그저 단순하게 생각하던 bitmap이 아닌 조금은 신기했다. 오늘 코딩하면서 제일 신기했던건 &인것 같다. 어떻게 보면 매우 간단해보이고 언제나 사용되었던 것인데 제대로 활용을 못하고 있었다.

 

예를 들어서 16명의 사람이 있고 몇명이 참석했는지 알고 싶을때 그냥 당연히 16개짜리 배열을 선언하고 거기에 값을 보아 있으면 참석했고 없으면 참석하지 않았다로 판별하고 그 수를 찾았을것 같다. 하지만 만약 bitmap을 사용해보면 너무나도 쉬워진다. 먼저 16개의 비트로 나타내면 0000 0000 0000 0000 으로 초기화를 해준다. 만약 참석하였을 때 1로 바꿔줄 경우 0100 0111 0110 0000 이 최종 참석자일때 각 자리수 만큼 1을 shift하여 &1을 하여 1로 set되어 있다면 수를 증가시키는 방법으로도 진행할 수 있다. 

 

또다른 예로 각각 다른 두 개의 강의가 있고 그 강의를 듣는 학생을 각각 AC, BCD라고 표현하겠다. 이 두 개의 강의를 모두 듣는 학생을 찾을 때 4개의 비트를 사용하여 쉽게 찾을 수 있다. 0000 순서대로 ABCD를 나타낸다고 생각하면 첫번째 강의의 경우 1010이고 두번째 강의 경우 0111이다. 여기서 &를 사용하면 0010으로 C를 바로 찾을 수 있다. 이렇게 반복문을 통하지 않고 한번에 표현이 가능한것을 처음 알았고 매우 참신하게 다가왔다. 몇개의 문제를 풀었고 더 배운 것이 있지만 보안 문제로 공개적으로 포스팅할 수가 없어서 아쉽다.

'코딩' 카테고리의 다른 글

[BOJ 1655] 가운데를 말해요  (0) 2022.02.04
[SWEA 2일차] 링크드 리스트  (1) 2022.01.20
[BOJ] 2749  (2) 2022.01.15
[BOJ13430] 합구하기  (1) 2022.01.09
[BOJ] 23291 어항정리  (2) 2022.01.05