no time long see. 이번 시간에는 c++20부터 적용된 bit 안에 있는 popcount 메소드에 대해 알아봅시다. 사실 코딩 테스트에서 켜진 비트수를 세는 문제, 혹은 이를 응용한 문제가 왕왕 보이는 편이기도 하고요. 그리고 그 이전에는 어떻게 해야 했는지 보도록 하겠습니다. popcount 메소드는, unsigned integer 형에 대해서만 동작합니다. 어떻게 동작하나만 보도록 하겠습니다. 7번째 줄에, popcount(i)가 있는데요. 이는 15에서 켜진 비트 수를 세라는 의미입니다. 몇 개인가요? 4개입니다. 따라서, 4가 출력됩니다. 예제 2번을 보시면, for loop를 돌면서 i의 켜진 비트 수가 몇 개인지를 출력합니다. 6번째 줄에서 for loop를 보면, i가 int형으..
레퍼런스 검색 결과
BinarySearch에 대해서 잘못된 부분을 수정하기 위해서, 프로그램을 작성하게 되었습니다. 코드 제너레이터를 이용해서, 게터, 세터, equals, hashCode 등을 자동으로 생성하게 되었습니다. 중요한 부분만 코드로 보도록 하겠습니다. Obj 클래스입니다. binarySearch를 할 때, key가 여러개 나올 때 lower_bound나 upper_bound를 이용할 수 없다고 없다고 하였습니다. 그것이 가능하게 하려면, unique 한 속성으로 떨어트려야 하는데요. 키가 등장한 위치 lo는 unique 합니다. 따라서, (x, lo) 쌍도 unique 할 겁니다. hashCode를 재정의 한 것을 보니까 Objects.hash(x, lo); 가 보이는데요. 이것이 무엇을 하는지는 모르겠지만,..
안녕하세요. 이 글에서는 List의 removeAll 메소드에 대한 질문이 와서 이에 대해 써 보도록 하겠습니다. 콜렉션에 대해서 입문하셨다면, clear와 혼동하기 매우 쉽습니다. 이 둘은 쓰이는 용도가 다릅니다. 어떻게 용도가 다른지, 정확한 복잡도는 어떻게 되는지 언급해 보겠습니다. list에 0부터 99999까지 추가합니다. 다음에, list m에도 0부터 99999까지 추가합니다. 다음에 removeAll 메서드를 호출하였습니다. 그러면 내부적으로 batchRemove 함수를 호출합니다. 일괄 처리할 때 그 batch입니다. 이로 미루어 보았을 때, Collection에 있는 삭제할 원소 하나 하나를 하나의 작업 단위로 보고 처리한다는 말이 되어 버립니다. 즉, 어떤 원소 m개를 삭제하려고 할 ..
assert 함수로 검증하는 과정 없이 문제 출제를 하는 것은 상상할 수 없습니다. 특히 복잡한 데이터 제너레이터를 여러 개 구현했다면, 검증하는 과정은 필수로 들어가야 합니다. 대회 set 하는 데 오래 걸리는 이유 중 하나입니다. 여기에서는 assert가 뭘 하는 함수이고, 제가 낸 문제에서 어떤 식으로 검증했는지 간단하게 언급해 보도록 하겠습니다. 아래 예제를 보겠습니다. assert(1 != 1); 이 있습니다. 안에 조건문 비슷한게 들어갔는데요. 실패합니다. 왜냐하면 1 != 1을 만족해야 하는데 1과 1은 같기 때문입니다. 정리하면, assert 함수에는 condition을 넣습니다. 이 조건이 만족하지 않으면 assert는 실패해 버립니다. 그래서, 문제를 만들 때에는, 데이터가 조건에 맞는..
안녕하세요. 여행 갔다와서 오랫만에 글을 씁니다. 이번 시간에는 파이썬의 os에 있는 listdir에 대해 알아봅시다. 먼저, 함수 설명을 봅시다. 이 함수는 디렉토리 안에 있는 파일들의 목록을 리턴해 주는 함수입니다. 예제 프로그램을 봅시다. 먼저, main.py는 프로젝트의 root 폴더에 있습니다. os.path.abspath('./test_data')는 기준 경로 밑에 test_data 폴더의 abspath를 출력합니다. 프로젝트 구조를 볼게요. test_data 밑에 있는 파일은 디렉토리 1, 1.in, 1.txt, 2.txt입니다. 실행 결과만 보도록 하겠습니다. 1, 1.in, 1.txt, 2.txt를 출력하는데요. 기준 경로로 잡혀있는 것이 드라이브 C 밑에 Users 밑에 chokw 밑에..
최근댓글