bitmask(3)
-
소프티어 - CPTI와 비트마스크
평소에 코딩테스트랑은 담을 쌓고 살던 와중, 어쩌다보니 코딩테스트를 앞두고 소프티어에서 2~3레벨 문제를 풀어보고 있었다. Javascript로 풀어볼 수 있는 문제를 필터링했는데 C, C++, Java, Python, Rust만 사용할 수 있는 이 씁쓸함이란... 아무튼 첫번째로 잡아본 문제는 'CPTI'. 출처 - 소프티어, CPTI Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제는 링크만 남겨놓을까 했었는데, 근시일내에 소프티어 서비스가 종료된다는 공지사항이 떠있길래 부랴부랴 캡쳐해서 백업해뒀다. 아무튼 문제는 다음과 같다. 이진수가 나온 시점에서 비트마스킹 생각이 먼저 떠올라서, scanf()를 사용해서 2진수 문자열을 입력받아 10진수로 변환한 뒤 배열에 저장하는..
2025.05.14 -
잊고있던 JS 패키지를 바이브 코딩으로 TS 마이그레이션하기
때는 바야흐로 지금으로부터 6년 전인 2019년, 한창 비트마스킹으로 스트레스를 받던 시절이었다. 회사에서 출시하는 IoT 장비의 모델이 늘어날 때마다 새로운 기능이 추가되는데, 이 기능이 벌써 32개를 넘어가면서 64비트로 확장하는 업무를 할 때였다. 당시만해도 여러대의 IoT 장비를 관리하는 제품을 만드시는 분은 '설마 기능이 64개까지 늘어나겠냐'면서 단순히 int로 작성된 타입을 int64로 변경하는데 그쳤지만, Javascript를 사용해야하는 나는 그럴수가 없었다. Javascript에서 제공하는 number의 범위는 -(2^53-1) ~ (2^53-1)인데, 이는 64비트를 온전히 표현하지 못한다는 의미가 된다. 따라서 브라우저 콘솔 등에 (1을 출력해보면, 오버플로로 인해 0이 아닌 -2..
2025.05.09 -
비트마스크를 배열로 관리하는 bitsToArrays.js
Javascript에서 비트마스크를 쓸 일이 있을까?=====임베디드 장비에서 서버를 돌렸기 때문에, 꽤 많은 기능들은 비트마스크로 관리됐다. 이벤트가 on/off됐다던가, 장비에 연결된 장치들과 연결이 끊어졌다던가, 이런 상태들을 한번에 관리하기엔 비트마스크만한 게 없었다. 뭣보다 워낙 옛날에 C로 코드를 작성하던 아저씨들이 만든 코드라, 비트마스크를 쓸 일이 상당히 많았다.여러개의 Boolean값을 사용하고 있다면, 비트마스크를 통해서 메모리 효율을 늘릴 수 있을 것이다. 비트마스크가 효율적이긴 한데...=====event_status라는 비트마스크에 n번째 비트가 설정되었는지 확인하려면, 다음과 같이 작성하면 된다. ```if ((event_status & (1
2019.01.09