목록Programming (10)
Code Run
1. gets함수를 이용하기 : 준비된 문자열 길이보다 입력되는 문자열이 더 긴 경우 다른 메모리 공간(무엇이 저장되어 있는지 알수 없는)을 침범할 수 있다. char str[210]; gets(str); 2. fgets함수를 이용하기 : char str[210]; fgets(str, 210, stdin); /// 문자열을 209개까지 입력받고 마지막에 '\0'문자을 넣어 준다. 단 '\n'이 함께 입력된다. /// 행바꿈 문자('\n', '\r')가 필요없는 경우(대부분의 경우가 그렇다.) 제거해 주어야 한다. 3. c++ 인 경우 getline함수와 char배열을 사용하기 : char str[210]; cin.getline(str, 210); /// 문자열을 209개까지 입력받고 마지막에 '\0'문자..
개행(행바꿈)을 하는 경우 윈도우와 리눅스는 차이점이 있습니다. '\r' : carriage return'\n' : line feed[ new line ] = (carriage return) + line feed 윈도우는 옛날 타자기의 타이핑 방법을 그대로 따른 방법으로 '\r', '\n' 두 개의 문자를 사용합니다.리눅스에서는 좀 더 단순화 하여 '\n'만을 사용합니다.채점 데이터는 리눅스에서 작성된 것과 윈도우에서 작성된 파일이 혼재되어 있습니다.따라서 위 문제의 경우 gets() 또는 fgets()함수를 사용하는 경우 윈도우에서실행할 때는 잘 나오지만 채점 서버는 리눅스 이므로 다른 결과가 나올 수 있습니다. 여러 방법으로 이를 해결할 수 있겠지만 그 중 한 가지를 소개하면 아래와 같습니다.fget..
방법 1. GCC인 경우 builtin 함수를 이용한다. __builtin_clz(k) 함수를 이용하여 leading zero bit의 개수를 구한뒤 32(또는 31)에서 빼준다.GCC-other builtin 링크 방법 2. 아래 코드의 msbPos, msbComki 와 같이 IEEE754의 부동소수점 표기법을 이용하는 방법이다. 지수부에 담겨있는 값이 결국에는 msbIndex임을 이해한다면 여러가지 방법으로 구할 수 있다. IEEE754 부동소수점 표기법 아래 msbPos, msbComki 코드는 msb를 알아보고자 하는 수가 0인 경우 -1023을 반환한다. 필요에 따라 적절히 코드를 수정하여 사용할 필요가 있다. 12345678910111213141516171819202122232425262728..
1. 복사하기 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/**copy use stlcopy*/#include #include #include #include #include using namespace std; int A[] = {3, 2, 5, 6, 1, 4};int arr[6];vector vec1; template void output(T A, string ment){ puts(ment.c_str()); for(int i=0;ia; vec.push_back(a); } for(i=0;i
[GCC 에서 좀더 빠른 입출력 01] ※ 파일 디스크립터( fd - File Descriptor) : 참고 페이지0 => stdin1 => stdout2 => stderr 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667/**faster IO testhttps://www.acmicpc.net/problem/10989comkiweruse GCC unistd.h - read(fd, buffer, nbyte), write(fd, buffer, nbyte)*/#include #include #include const int LM = 10..
[ 방법 1 : C에서 문자열을 단어로 나누기- naive 구현] 123456789101112131415161718192021222324252627282930313233343536373839404142/**split string C_version 01comkiwer*/#include #include #define LM 100 char str[LM+1]; /// 입력 문자열char word[LM+1][LM+1]; /// 분리된 단어를 저장할 배열int wcnt; /// 분리된 단어의 갯수 int main(){ freopen("in.txt", "r", stdin); int i, j, len; /// gets(str); /// gets() 또는 fgets()로 입력 fgets(str, LM, stdin); /..
A Swar Algorithm for popcount 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293/**Bitwise pop count and find first setFind First Setget least significant bit indexcomkiwerhttps://www.playingwithpointers.com/blog/swar.html*/#include typedef unsigned int UI; UI popcount(U..
* P가 소수일때 x의 곱셈에 대한 역원을 페르마의 소정리를 이용하여 구할 수 있다. x^(P-1) = 1 (mod P) 이므로x^(P-2) = x^(-1) (mod P) 를 얻는다. x^(P-2)는 분할 정복을 이용하여 O(log(P))에 구할 수 있다. * P가 소수일때 1 ~ N까지 수들의 P의 곱셈에 대한 역원(inverse)을 O(N)에 구하는 방법 cf) https://apps.topcoder.com/forums/?module=Thread&threadID=680416&start=15&mc=26 P : modulo(ex. p = 1000000007)inv(1) = 1 inv(x) = -(P/x) * inv(P%x) for x>1 [증명]P % x = P - P/x*x (mod P)(P%x) = ..
ShortCutKey 참조 : 1. Visual Studio에서 자주 사용되는 명령의 기본 바로 가기 키 2. Visual Studio의 기본 바로 가기 키 빌드명령바로가기 키솔루션 빌드Ctrl+Shift+B[전역]컴파일Ctrl+F7[전역] 빌드명령바로가기 키디버깅하지 않고 시작Ctrl+F5[전역]중단점 설정/해제F9[전역]모든 중단점 삭제Ctrl+Shift+F9[전역]디버깅 시작F5[전역]커서위치부터 디버깅 시작(커서까지 실행)Ctrl+F10[전역]프로시저 단위 실행 (Step Into)F11[전역]프로시저나가기(Step Out)Shift+F11[전역]한 단계씩 코드 실행 (Step Over)F10[전역]디버깅 중지Shift+F5[전역] 보기명령바로가기 키뒤로탐색Ctrl+-[전역]앞으로탐색Ctrl+Sh..
참고 링크 1 : https://algocoding.wordpress.com/2015/04/23/fast-io-methods-for-competitive-programming/ 참고 링크 2 : http://codeforces.com/blog/entry/8080 콘솔입출력 import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.StringTokenizer; public class Main {static BufferedReader in;static Buffer..