C++ STL 중 하나인 unordered_map은 map보다 더 빠른 탐색을 위한 자료구조이다.시간복잡도가 O(logn)인 map에 비해 unordered_map은 해시 테이블로 탐색하여 O(1) 시간복잡도를 가진다. 함수unordered_map을 include 해서 사용할 수 있는 함수는 다양하다. 실제 코딩테스트에서 주로 사용하는 함수에 대해서 알아보자.empty() : map이 비었는지 확인하는 함수size() : map의 크기를 확인하는 함수[] : map에서 key를 사용해서 value를 지정하는 operatorfind(key) : key를 사용해서 value를 찾는 함수 count(key) : key에 해당하는 value 갯수를 찾는 함수insert({key, value}) : map에 p..
언어/C, C++
정적(static) 변수 : 컴파일 시 메모리가 할당되고 프로그램이 종료되면 메모리가 삭제된다. 동적(dynamic) 변수 : 변수 선언과 동시에 메모리가 할당되며 변수 사용이 종료되면 메모리가 사라진다.
* ** *** **** ***** ****** ******* #include int main() { for (int i = 0; i < 7; i++) { for (int j = 0; j < 7 - i; j++) printf(" "); for (int k = 0; k
#include int main() { int n; printf("정수를 입력하시오.:"); scanf("%d", &n); printf("약수 :"); for (int i = 1; i
do-while 문 : while문과 비슷하지만 반복 조건을 루프의 마지막에 검사함. 따라서 조건을 만족하지 않아도 무조건 1번은 실행됨. do { . . . } while ( 조건 ); [예제] #define _CRT_SECURE_NO_WARNINGS #include int main() { int guess; int answer = 59; int tries = 0; do { printf("정답을 추측해 보시오. : "); scanf("%d", &guess); tries++; if (guess > answer) printf("제시한 숫자가 점수보다 높습니다.\n"); else if (guess < answer) printf("제시한 숫자가 점수보다 낮습니다.\n"); } while (guess != an..
#include int main() { int x = 3; int y = -3; printf("x = %08X\n", x); printf("y = %08X\n", y); printf("x+y = %08X\n", x + y); return 0; } 위 코드에서 '%08X'는 16진수로 출력하라는 형식지정자이다.
* 에라토스테네스란 ? 소수를 찾아내는 방법 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 자기 자신을 제외한 2의 배수를 모두 지운다. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색) 자기 자신을 제외한 3의 배수를 모두 지운다. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색) 자기 자신을 제외한 5의 배수를 모두 지운다. 남아있는 수 가운데 7은 소수이므로 오른쪽에 7을 쓴다. (노란색) 자기 자신을 제외한 7의 배수를 모두 지운다. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다. 이므로 11보다 작은 수의 배수들만 지워도 충분하다. 즉, ..
스터디 과제를 하던 중 알게 된 것을 정리했다. scanf로 문자열을 입력받는 방법들이다. ⓐ 일반적인 입력 char str[100] scanf("%s", &str); 👉 str에 공백 혹은 엔터가 있을 때까지 입력받기 ⓑ 공백을 포함한 문자열 scanf("%[^\n]s", &str); 공백을 포함해 입력받기를 원하는 경우, gets나 fgets도 사용하지만 scanf로도 구현가능 👉 [] 안의 문자를 받을 때까지 입력을 받음 예를 들어, '*'이 나올 때까지 입력을 받는 경우라면, scanf("%[^*]s", &str); 로 표현할 수 있다. 그렇다면, [] 안의 문자를 제외하고 읽을 수는 없을까? scanf("%[^*]%*c", &str); '*c'는 [] 안의 문자를 제거하고 읽는다. 이 코드는 '..