안녕하세요. 오랫만에 뵙겠습니다. 간혹 가다가 백준에서 문제를 풀다 보면, 문자열이 x개 나오면 이 문자열들 사이에 특정 문자를 넣어야 하는 경우가 있습니다. 예를 들어, 테스트 케이스 문제라면 개행 문자를 넣는 경우가 있을 겁니다. python에서는 이러한 기능을 join으로 매우 쉽게 처리할 수 있었어요. 예를 들어, 이런 식으로 쓰면 출력은 어떻게 될까요? 아시다시피 'my name is cho'가 출력이 됩니다. 사용법도 그리 어렵지 않아요. 그냥 Iterable한 객체를 넘겨주면, separator가 element 사이에 끼어들어가 버리게 됩니다. 저 예제에서는 list를 넘겨주었고, Separator로 ' '을 넘겨주었기 때문에, 원소들 사이에 공백이 하나 들어갑니다. 그래서 my name i..
레퍼런스/예제 검색 결과
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형으..
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 밑에..
7월 18일에 제가 운영한 2회 코딩테스트가 열렸습니다. 이 중에, 1번 문제는 다중 정렬을 이용한 문제였습니다. 백준에서 정렬 분류로 치면 나오는 문제들을 풀 수 있다면 풀 수 있게 해서 그런지, 정답자 수가 많은 편에 속하는 문제가 되었습니다. 그 이후에도 사람들이 꾸준히 많이 풀어주셨는데요. 저는 name과 확장자, os에서 확장자를 인식하는지 여부를 3개의 플래그로 만들어서 관리했습니다. 그런데, 다른 분이 Comparator와 람다를 잘 이용하면, 코드도 줄일 수 있고, 단순화 된다는 조언을 주셨습니다. 먼저, myFile 클래스를 보겠습니다. name과 ext만 필드에 있습니다. 생성자는 name과 ext를 받아서, 확장자와 네임을 생성이 될 때 채워넣습니다. 그 이후로 setName, set..
최근댓글