1) 입력을 그대로 출력
char c;
while ((c = getchar()) != EOF) {
printf("%c", c);
}
2) 1 부터 n 까지 합
int sumToN(int n) {
return n * (n + 1) / 2
}
3) 간편한 최대 공약수 구하기
int gcd(int a, int b) {
int great_common_divisor = 1;
for (int k = 1; k <= a && k <= b; ++k) {
if (a % k == 0 && b % k == 0) {
great_common_divisor = k;
}
}
return great_common_divisor;
}
int GCD(int a, int b) {
while(b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
int GCD(int a, int b) {
return b == 0 ? a : GCD(b, a % b);
}
4) char 변수 연산
'0' == 48
'A' == 65
'a' == 97
// 정수 연산 가능
'0' + 1 == '1'
'A' + 3 == 'D'
'G' + 32 == 'g'
'p' - 32 == 'P'
4-1) char <-> int 변환
int asciiDigitToNumber(char x) {
// x >= '0' && x <= '9'
return x - '0';
}
char numberDigitToAscii(int x) {
// x >= 0 && x <= 9
return x + '0';
}
4-2) 대소문자 변환
void toCapital(char* s) {
for (int i = 0; s[i]; ++i) {
if (s[i] >= 'a' && s[i] <= 'z') {
s[i] -= 32;
}
}
}
void toLower(char* s) {
for (int i = 0; s[i]; ++i) {
if (s[i] >= 'A' && s[i] <= 'Z') {
s[i] += 32;
}
}
}
5) int 의 최대값과 큰 값으로 초기화 필요시
int a = 2147483647; // maximum value of integer
int b = 987654321;
6) 문자열 세기
int strlen(char* s) {
int len = 0;
while (s[len]) {
len++;
}
return len;
}
int strlen(char *p) {
int len = 0;
while (*p++ != '\0') {
len++;
}
return len;
}
7) 숫자 하나씩 꺼내쓰기
while (n > 0) {
int k = n % 10;
// do something with k
...
n /= 10;
}
9) 스택
const int MAX_STACK_SIZE = 1000;
int stack[MAX_STACK_SIZE + 1];
int stack_top;
void stackInit() {
stack_top = 0;
}
int stackSize() {
return stack_top;
}
bool stackIsEmpty() {
return stack_top == 0;
}
void stackPush(int x) {
stack[stack_top++] = x;
}
int stackPop() {
return stack[--stack_top];
}
10) 큐
const int MAX_QUEUE_SIZE = 10000;
int queue[MAX_QUEUE_SIZE + 1];
int queue_head;
int queue_tail;
void queueInit() {
queue_head = queue_tail = 0;
}
int queueSize() {
return queue_tail - queue_head;
}
bool queueIsEmpty() {
return queueSize() == 0;
}
void queuePush(int x) {
queue[queue_tail++] = x;
}
int queuePop() {
return queue[queue_head++];
}
11) 반올림
반올림에 대해서 따로 처리할 필요가 없다
.2f 는 소수점 셋째 자리에서 반올림한후 소수점 둘째 자리까지 출력하라는 의미
printf("%.2f", avg / N);
12) 덱
#define MAX 20000
int queue[MAX + 1];
int front, rear;
void init(void) {
front = MAX / 2;
rear = front + 1;
}
int size(void) {
return rear - front - 1;
}
void push_front(int n) {
queue[front--] = n;
}
void push_back(int n) {
queue[rear++] = n;
}
bool empty(void) {
if (size() > 0)
return false;
else
return true;
}
int pop_front(void) {
if (size() > 0) {
return queue[++front];
}
else {
return -1;
}
}
int pop_back(void) {
if (size() > 0) {
return queue[--rear];
}
else {
return -1;
}
}
int qfront(void) {
if (size() > 0) {
return queue[front + 1];
}
else {
return -1;
}
}
int qback(void) {
if (size() > 0) {
return queue[rear - 1];
}
else {
return -1;
}
}
댓글 없음:
댓글 쓰기