| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- Daemon
- 42
- 네스트JS
- Born2beroot #42
- 데이터중심애플리케이션설계
- ecole42
- pipex
- nestjs
- Spring-Boot
- docker
- 42Seoul
- data-root
- Spring
- django #ninja #django-ninja #장고
- dockerd
- Today
- Total
목록전체 글 (95)
혼자 정리
문제링크 CPP #include using namespace std; int memo[1001]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; memo[1] = 1; memo[2] = 2; for (int i = 3; i
문제링크 C++ #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int T, n; cin >> T; int arr[12]; arr[1] = 1; arr[2] = 2; arr[3] = 4; for (int i = 4; i > n; cout
문제링크 C++ #include using namespace std; int arr[50001]; void find(int N) { arr[0] = 0; arr[1] = 1; for (int i = 2; i arr[i - j * j] + 1: # print(i, j) arr[i] = arr[i - j * j] + 1 print(arr[N]) 모든 제곱수는 한 개의 제곱수로 나타내어질 수 있다는 것을 파악하는 것이 관건이었다. $O(N^{3/2})$의 시간 복잡도로 풀었다. ($N * \sqrt{N}$?) 파이썬에서 기존 c에서와 같은 for문은 안 되므로 굳이 그런 형태를 원한다면 while문을 써야 하려나? Python3에서는 시간초과, pypy3에서는 통과했다. pypy에서는 그만큼 메모리를 더 많이..
문제링크 CPP 코드 #include #include using namespace std; int M; int S; string cmd, num; void do_add(int &S) { cin >> num; S |= (1 > num; S &= ~(1 > num; if ((S & (1 0) cout num; if ((S & (1 0) { S &= ~(1 M; for (int i = 1; i > cmd; if (strcmp(cmd.c_str(), "add") == 0) do_add(S); else if (strcmp(cmd.c_str(), "remove") == 0) do_remove(S); else if (strcmp(cmd.c_str(), "check") == 0) do_check(S); else if ..
문제링크 #include #include #include using namespace std; int N, M; string temp; map maps; string arr[100001]; int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> N >> M; for (int i = 0; i > temp; maps.insert(pair(temp, i + 1)); arr[i + 1] = temp; } for (int i = 0; i > temp; if (isdigit(temp[0])) { cout
문제링크 #include #include using namespace std; int count(int &i, int N, int M, string &S) { int idx = i + 1; int cnt = 0; while (idx = 0) return (cnt - N + 1); else return 0; } int find(int N, int M, string &S) { int i = 0; ..
Mutex lock mutex : mutual exclusion (상호 배제) 임계 영역 진입할 때 열쇠(lock) 가지고 들어가고, 나올 때는 열쇠 반납하는 느낌while (true) { acquire lock critical section release lock remainder section } acquire()와 release()의 두 함수 available의 불리안 변수. : lock을 얻을 수 있는 상황이면 true, 아니면 false. acquire() { while (!available) ; /* busy wait */ available = false; } release() { available = true; } acquire()와 release()과정도 atomically하게 이루어져야 ..
cf) 내용에 있는 오류로 발생하는 문제는 책임지지 않습니다. Data race 다음 코드 예시를 보자 #include #include int sum; void *run(void *param) { int i; for (i = 0; i < 10000; i++) sum++; pthread_exit(0); } int main() { pthread_t tid1, tid2; pthread_create(&tid1, NULL, run, NULL); pthread_create(&tid2, NULL, run, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); printf("%d\n", sum); }메인 함수에서 tid1과 tid2라는 스레드를 생성하였고 각각의 스레..
x86-64 CPU는 다음과 같이 64비트 값 저장 가능한 범용 레지스터를 16개 가지고 있다. 맨 앞의 붙은 r은 register의 의미로 64비트를 뜻한다 맨 앞에 e가 있는 경우 32비트를 의미 기본적으로 그림에서 보듯이 인스트럭션은 16개의 레지스터에 있는 여러 크기의 하위 바이트 데이터에 대해 연산할 수 있다. 64비트 연산시 레지스터 전체에, 32비트 연산시 하위 4바이트에, (위 그림에는 없지만) 16비트 연산시 하위 2바이트에, 8비트 연산시 하위 1바이트에 접근. 레지스터에서 1,2,4,8바이트를 사용할 수 있는데 8바이트를 사용하는 경우를 제외하고 전체 레지스터를 사용하지 않는다. 그러한 경우 레지스터의 남는 바이트들에 대해서 다음과 같이 처리한다. 1 or 2바이트 생성 : 나머지 바..
기본적으로 '워드(word)'는 16비트 데이터 타입을 지칭(처음에 16비트 구조를 사용하다 32비트로 확장했기 때문) 32비트는 '더블워드(double-word)' 64비트는 '쿼드워드(quad-word)' 아래 표는 C 기본 데이터 타입에 사용되는 x86-64 표현을 보여줌. 표준 int값은 더블워드로 저장(32비트=4바이트) 포인터는 64비트 머신에서 8바이트 쿼드워드로 저장. x86-64에서 long은 64비트(=8바이트)로 구현 C 선언 인텔 자료형 어셈블리코드 접미문자(suffix;꼬리 문자) 사이즈 (바이트) char Byte b 1 short Word w 2 int Double word l 4 long Quad word q 8 char * Quad..