🎯 요약 정리cin은 빠르지 않음. sync_with_stdio(false)를 써도 fread에는 밀림.fread는 버퍼를 한 번에 통째로 읽기 때문에 cin보다 최대 수십 배 빠를 수 있음입력 받는 과정에서의 오버헤드를 줄여서 빠르게 처리하는 것. 🔍 코드 분석#define bsz 1 = 48) { ret = ret * 10 + tmp - 48; tmp = read(); } return ret;} 🔹 #define bsz 1 bsz는 버퍼 크기를 정하는 건데, 1 는 2의 14승 = 16,384 바이트 (16KB) 를 의미.즉, 한 번에 16KB만큼 입력을 미리 읽어놓겠다는 뜻버퍼의 크기를 몇으로 하든 상관은 없지만, 너무 작지만 않으면 되고 너무 크지만 않으면 된다. 크기를 키우기 전에 ..
📌 개요C++의 헤더에는 순열을 생성하는 두 가지 함수가 있다next_permutation: 사전순 다음 순열을 생성prev_permutation: 사전순 이전 순열을 생성조합/순열 문제에서 굉장히 자주 쓰이며, 특히 비트마스크 조합 탐색과 찰떡궁합이다. 🧠 기본 원형bool next_permutation(Iterator first, Iterator last);bool prev_permutation(Iterator first, Iterator last);현재 순열을 기준으로 다음 / 이전 순열을 생성더 이상 만들 수 있는 순열이 없으면 false 반환 ✅ 예제 1: 숫자 순열 전체 출력vector v = {1, 2, 3};do { for (int x : v) cout 결과: 1 2 3 → 1 ..
미래의 나를 위한...... 몰라서 고생했던거 1. 환경 변수 셋팅한걸 반영하려면 재부팅을 해야한다ㅋㅋ2..vscode 폴더 안에 tasks.json이 컴파일 관련, launch.json은 디버깅 관련 셋팅을 하는 파일인 것 같다. 🔨 컴파일러 셋팅gcc는 C 전용 컴파일러, g++는 C++ 전용 컴파일러다. c++을 컴파일 하려면 g++을 사용해야한다. 파일 경로에 한글이 있으면 컴파일이 안된다ㅋㅋ 📌 방법 1. 터미널에서 직접 g++로 빌드g++ -g your_file.cpp -o your_program.exe 📌 방법2. VSCode에서 빌드vscode 폴더 안에 tasks.json 열어서 "command": "gcc" 부분을 아래와 같이 바꿔준다 "command": "g++" 전..
결론단일 문자를 추가할땐 push_back사용 -> O(1)의 시간복잡도 문자열 크기가 1이 아닌 문자열을 추가할땐 s = s + "A" 말고 += 사용!! : 이유는 이제 알아보자. 우선 String은 벡터를 기반으로 하고 있고, 동적 메모리 재할당을 최소화하기 위해 여유 공간(이하 버퍼라 칭함) 을 가지고 있다. 현재 버퍼가 부족하면 새로운 메모리 공간을 할당해야 한다. 그래서 만약 다음과 같은 코드가 있을때, int main() { string s = "ABC"; string a = "ABC"; //s에 a를 붙여보자}s=s+a; s+=a; 어떤 방법을 사용하든 "ABCABC"가 나오긴 하는데, 둘이 매커니즘이 조금 다르다. 1) s=s+a 1. s+a 실행 : s와 "A"를..