haward의 등록된 링크

 haward로 등록된 티스토리 포스트 수는 117건입니다.

백준 1182번 부분수열의 합(C++) 알고리즘을 풀며 반성.. [내부링크]

문제1182번: 부분수열의 합https://www.acmicpc.net/problem/1182정답 코드#include using namespace std; int n,s; int cnt; int num[21]; int ret[21]; // 결과를 담을 배열 voidfunc(int k,int tot) { if (k == n) { if (tot == s) cnt++; return ; } func(k+1,tot); func(k+1,tot+num[k]); } int main() { ios:: sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n>>s; for (int i=0;i < n;i++) cin >> num[i]; func(0,0); if ( s== 0 ) cnt..

[CPP함수 사용법]setfill 함수와 setw함수 사용법 [내부링크]

공백으로 쭉 출력하는 걸 나는 당연하게도 앞에 공백을 쭉 출력해주고 사용하는 것이라고 생각했는데 아에 입력 자체를 바꾸기를 원했다.이 평가를 당하셔서 공유해주신 soo님께 깊은 감사를 전한다.std::setw(int n);예시코드// setw example #include // std::cout, std::endl #include // std::setw int main () { std::cout

[비트연산]대소문자 변경을 비트연산으로 해보자. [내부링크]

대소문자 변경을 할 때 우리는 XOR연산을 통해 쉽게 할 수 있다.A^32를 해주게 되면 a가 되고 a^32해주게 되면 A가 된다.이건 매우 간단하게 설명이 가능한데, a와 A가 아스키 코드 값으로 32만큼 차이가 나기 때문이다.a 는 아스키 코드 값으로 97 A는 65 이다.둘 사이 차이는 32로 서로 32를 더하고 빼면 나오는 값이다. 비트로 보기a = 97을 8비트로 보면 0110,0001 이고 A = 65 [0100,0001] 이다.이걸 조금 더 보면 알파벳의 갯수는 26개이고, 각각을 비트로 표현하면 A = [0100,0001](65) Z =[0101,101](90)이다.a = [0110,0001](97) z = [0111,1010](122)이다.따라서 A^32가 어떤의미인가, 32를 비트로 표..

[CPP 모듈 고민]SEARCH에서 출력 순서 [내부링크]

가장 나중에 넣은걸 가장 뒤로 하고 싶은데 이렇게 해도 되는걸까?굳이 싶긴하다.이전코드print_row_sep(); int size(idx); if (is_full== true) size=8; for (int i=0;i < size;i++) { print_each_col(i); if (idx -size + i < 0) print_each_col(idx -size + i + 8); else print_each_col(idx -size + i); print_row_sep(); }수정코드print_row_sep(); int size(idx); if (is_full== true) size=8; for (int i=0;i < size;i++) { print_each_col(i); print_row_sep(); }..

[Cpp 개념공부]__how to user input the noprintable ascii on cin (어떻게 cin에서 none printable를 받을 수 있을까)__ [내부링크]

과제 중 none printable 한 것들을 입력 받는 경우에 대한 예외를 처리하려고 하는데 그것을 입력 받는 방법을 몰라서 테스트를 못하고 있다.추가적으로 널을 입력 받는 방법도 궁금하다.일단 내가 해결 한 방법은 ctrl +v 를 입력하면 신기하게도 22 이렇게 나오고 ctrl m을 하면 원하는 0 값이 나온다.테스트 코드#include int main() { std::string command; while (true) { std::string command; getline(std::cin,command); std::cout

[Cpp 개념공부]__cin에서 endof 를 쏴줄 때 cin이 다시 사용하지 못하는 이슈__ [내부링크]

나의 궁금증을 한줄로 요약하자면안녕하세요 혹시 cin을 입력 받을 때 유닉스의 경우 ctrl+d 윈도우의 경우 ctrl+z를 입력하면 endof를 입력이 되는걸로 알고 있는데 이렇게 입력을 받고나면은 다른 cin은 전부 실행이 되지 않고, 끝나게 됩니다. cin이 endof를 받게되면 endofbit를 초기화해서 stdin을 사용하지 못하게 하는 것 같은데, 이것을 혹시 되돌려서 다시 cin 즉 stdin을 받는 방법을 아실까 싶어서 댓글 남겨봅니다. 감사합니다! cin에서 endof 를 쏴줄 때 cin이 다시 사용하지 못하도록 변하는 것 같다.이 문제를 어떻게 해결 할 수 있을까?완전히 고장나는 것일까? try catch를 하는 것 말고 cin을 고치는 방법은 없는 걸까?window와 unix에서의 e..

[Cpp 개념공부]cin대신 getline [내부링크]

cin을 사용하면 공백과 개행을 기준으로 입력을 받으므로 getline함수를 이용해서 한줄을 통째로 받도록하자.cin과 getline을 동시에 사용할 때 생기는 이슈cin의 경우 입력을 “aaa\n”이렇게 넣어주더라도, aaa까지만 입력에 들어오고 뒤의 \n의 경우 남아있어서 getline함수가 그것을 버퍼에 가지고 있을 수 있습니다.getline사용법사용법 1#include int main() { string command; getline(std::cin,command); }다음과 같이 cin할 녀석과 입력을 받아서 저장할 인스턴스를 미리 지정해주면, 위 코드에서는 command string에 개행 기준으로 넣게 된다.이전에 string 사용법에서 잘 정리해줘서 그걸 보고 getline함수를 쓰면 된다..

[Cpp 개념공부] **Meaning of position of const(**const위치에 따른 의미차이) [내부링크]

1. const 변수const int n = 0; int const n = 0; n = 2; // Compile Error위의 두 코드는 의미가 같다.2. const 멤버 변수클래스 내부에도 const키워드를 사용해서 초기화를 할 수 있는데 반드시 초기화 리스트를 사용해야만 한다.class Example { const int n; Example(void) : n(1) {}// const int num = 1; }; class ERROR { const int N; Bar(void) { N = 1; // Compile Error } };위 와 같이 클래스에서 멤버변수를 const로 만들고 초기화 하고 싶다면 반드시 생성자 초기화 리스트를 써야하고 아래 클래스를 돌려보면 컴파일 에러가 발생하는 것을 알 수가 ..

Netpractice를 3일만에 끝내보자. (6~10번 문제풀이)(3/3) [내부링크]

레벨 6 문제 간단 정답 해설 오히려 상당히 쉬운 문제입니다. 처음으로 인터넷이 등장하는데요, 인터넷은 비록 그림에서는 목적지가 하나로 보여도 전세계로 연결되는 공용 네트워크이기 때문에 왼쪽의 목적지에 default를 사용할 수 없고 반드시 지정을 해줘야 합니다. 그것만 안다면 5번과 비슷하게 어려운 점이 없습니다. 문제 풀이 우선 저희는 서브넷 마스크랑 인터넷이 가야하는 네트워크의 위치를 알아서 저곳을 먼저 채울 수 있죠. 다음으로 인터페이스의 IP만 채우면 되는데요 서브넷 마스크에 의해 R1의 인터페이스 IP는 70.49.180.129~ 70.49.180.254 가 가능하답니다~~ 저는 여기서 궁금증이 조금 생겼는데, 과연 라우터의 라우팅 태이블은 무엇을 가리기코 있는건지 살짝 이해가 안 갔었는데, ..

Netpractice를 3일만에 끝내보자.(문제풀이 및 개념공부 1~5번)(2/3) [내부링크]

시작 전 간단한 서브넷 마스킹 설명 간단하게 서브넷 마스크의 특징을 설명하겠습니다. 더 깊은 원리에 대해 공부하고 싶다면 제가 정리한 글과 구글의 다양한 글을 참고하세요! 간단 ip와 서브넷 마스크의 특징 같은 네트워크에 속한 ip의 서브넷 마스크는 같아야합니다. 같은 네트워크에 속한 ip는 같을 수 없습니다. 서브넷 마스크와 ip주소와의 AND연산을 해서 나온 결과값이 네트워크 주소입니다. 서브넷 마스크는 반드시 앞에서부터 1로 순서대로 채워져있습니다 255.0.255.0 —>이건 불가능하다는 의미입니다. 255.255.255.1 —>불가능 255.255.255.254—> 가능 255.255.128.0 —> 가능 서브넷 마스크로 ip주소를 나누게 되면 [ip] = [네트워크 주소 / 호스트 주소] 이렇..

Netpractice를 3일만에 끝내보자. (시작 전 개념공부)(1/3) [내부링크]

참고 링크시간이 많다면 위의 글을 다 보시는 것을 추천합니다.서브넷 마스크와 서브넷팅 계산법우리가 흔히 사용하는 IP 주소 체계인 IPv4는 이론적으로 42억 개의 네트워크 장치에 IP Address를 부여할 수 있습니다. 언뜻 보면 많아 보이지만 컴퓨터뿐 아니라 스마트폰까지 대중화된 시대에 42억 개는 그리 많은 수가 아닙니다. 그런데 문제는 42억 개를 각 네트워크 영역마다 아무렇게 둘 수 없다는 점입니다. 극단적인 예시로 A 클래스를 보시면 이해하기 쉽습니다.http://korean-daeddo.blogspot.com/2016/01/blog-post_26.html공인 IP와 사설 IP... 다양한 IP 유형의 차이는?IP 주소는 인터넷 프로토콜 주소를 의미하며 숫자로 구성되어 인터넷에 연결된 장치를..

백준 1189번 컴백홈 dfs(C++) [내부링크]

문제정답 코드#include #include #include #include int dx[]={-1,0,1,0}; int dy[]={0,1,0,-1}; using namespace std; int r,c,k; int cnt =0; // voidprint_map(vector arr) // { // for (int i=0;i < r;i++) // { // for (int j =0;j < c;j++) // { // cout > k; vector arr(r,vector(c,0)); for (int i=0;i < r;i++) { string s; cin >> s; for (int j=0; j

백준 1325번 효율적인 해킹(C++) [내부링크]

문제정답 코드#include #include #include #include #include using namespace std; int compu_num,n; vector compu[10001]; int result[10001]; int vis[10001]; int maxi; int dfs(int a) { vis[a] = 1; int ret = 1; for (int k : compu[a]) { if (vis[k]) continue; ret +=dfs(k); } return (ret); } int main() { ios:: sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> compu_num >> n; for (int i=0;i < n;i++) { int down..

42서울 ft_printf 시작 전 공부 정리(printf직접 구현하기) [내부링크]

구조체 값을 초기화 하는 방법 : ft_memset printf함수가 write보다 늦게 나오는 이유 printf함수는 라인 버퍼링을 사용하기 때문이다. line buffering 이란? 버퍼에 개행 문자가 입력될 때 마다 출력한다. 즉 개행문자가 들어오지 않는다면 버퍼에 계속 쌓아두다가 더이상 실행 할 명령이 없을 때 해당 버퍼의 내용을 출력한다.(과제에서는 실제 printf처럼 버퍼관리를 수행해서는 안된다고 한다.) 가변인자 목록(코딩도장) 42서울 ft_printf 시작 전 공부 정(printf직접 구현하기) 구조체 값을 초기화 하는 방법 : ft_memset printf함수가 write보다 늦게 나오는 이유 printf함수는 라인 버퍼링을 사용하기 때문이다. line buffering 이란? 버퍼..

백준 2636번 치즈(C++) [내부링크]

문제 정답 코드#include #include #include #include #include using namespace std; int n,m; #define X second #define Y first /* 입력 -> 변경 맵과 이전 백업맵 2개로 생김 이전 백업맵에서 bfs를 하는데 4방향 탐색중 0이 있다면 그 부분의 변경맵을 0으로 변경 그렇게 쭉 한바퀴를 다 돌고 나면 변경 맵을 검사해서 전부다 0인지 확인 전부다 0이면 이전 백업을 출력 아니라면 백업을 바꾼 맵으로 바꾸고 다시 함수 시작. */ const int dx[] = {0,1,0,-1}; const int dy[] = {1,0,-1,0}; int check_done(vector ar) { for (int i=0;i < n;i++) ..

이코테 구현알고리즘 예제 1번 상하좌우 -방향벡터 (C언어) [내부링크]

#include int main() { int input; scanf("%d", &input); //int map[100][2];//0:x 1:y int x = 1; int y = 1; char order[2]; for (int i = 0; i 1) x--; else if (order[0] == 'R' && x < input) x++; else if (order[0] == 'U' && y > 1) y--; else if (order[0] == 'D' && y < input) y++; } printf("%d %d", y, x); } 난 이렇게 풀었는데 방향 벡터를 이용해서 푸는 방법이 더 깔끔한 것 같다. dx[4] = {0, 0, 1, -1};(행) dy[4] = {1, -1, 0, 0};(열)이렇게 미..

이코테 구현알고리즘 예제 2번 시각 완전탐색 (C언어) [내부링크]

#include int check_three(int *num) { for (int i = 0; i < 3; i++) { if (num[i] % 10 == 3 || num[i] / 10 == 3) return 1; } return 0; } int main() { int time[3] = {0,0,0};//마지막 NULL int input; scanf("%d", &input); int count = 0; for (int i = 0; i

백준 왕실의 나이트(C) 수학적 풀이, 완전 탐색적 풀 [내부링크]

#include int main() { int count = 8; char input[3]; scanf("%s", input); int check = input[0] + input[1] - 'a' - '1'; if (check == 0 || check == 14) count -= 6; else if (check == 1 || check == 13) count -= 5; else if (check == 2 || check == 12) count -= 4; else if (check == 3 || check == 11) count -= 3; else if (check == 4 || check == 10) count -= 2; printf("%d", count); } 좀 이상하게 조건문에 꽂쳐서 수학적으로 풀..

백준 (C언어) (구현) 게임개발 -방향벡터 및 맵 탐색 [내부링크]

#include #include int main() { int length, width;//세로, 가로 int x, y, direction;//방향은 0:북, 1:동, 2:남, 3:서 int** map;// 세로 가로, 0육지 1바다 scanf("%d %d", &length, &width); map = (int**)malloc(sizeof(int*) * (length)); //int move[4][2] = {{0,-1}, {1,0}, {0,1}, {-1,0}};//북, 동, 남 ,서 int move[4][2] = { {0,1}, {-1,0} ,{0,-1} ,{1,0} };//북,서,남,동 scanf("%d %d %d ", &x, &y, &direction); for (int i = 0; i < lengt..

백준 9012번 괄호 (C++) (스택활용) [내부링크]

문제정답 코드#include #include #include #include using namespace std; int main() { int n; cin >> n; for (int i=0;i > s; for (auto it : s) { if (it == ')') { if (st.empty()) { cout

백준 1436번 영화감독 숌(C++) [내부링크]

문제 정답 코드 #include using namespace std; #define ll long long int main() { ll n; cin >>n; ll go = 665; int i =0; int tmp; while(i

도서관리 프로그램 구조체 활용버전 씹어먹는 C언어 [내부링크]

드디어 구조체!! #include struct Human { int age; int height; int weight; }; int main() { struct Human Psi; Psi.age = 99; Psi.height = 185; Psi.weight = 80; printf("psi에 관한 정보\n"); printf("나이: %d\n", Psi.age); printf("키: %d\n", Psi.height); printf("몸무게: %d\n", Psi.weight); return 0; } 드디어 구조체를 배운다!! 슬슬 C언어 공부의 고지가 보인다. 최소 이 정도는 끝내고 가야 한다의 이정도를 끝내가는거다. 아자아자!! 노트필기중이라 블로그에는 별로 남기는게 없는데 진짜 대박이다 구조체!!! 새로운..

스택과 큐 자료구조 C로 [내부링크]

#include #define MAX_STACK_SIZE 100 int stack[MAX_STACK_SIZE]; int top=-1; int IsEmpty(){ if(top=MAX_STACK_SIZE-1) return true; else return false; } void push(int value){ if(IsFull()==true) printf("스택이 가득 찼습니다."); else stack[++top]=value; } int pop(){ if(IsEmpty()==true) printf("스택이 비었습니다."); else return stack[top--]; } int main(){ push(3); push(5); push(12); printf("%d ",pop()); printf("%d ",po..

합병정렬 [내부링크]

void MergeSort(long long int L, long long int R){ if(L>=R) return; long long int M=(L+R)/2; MergeSort(L, M); MergeSort(M+1, R); for(long long int i=L, l=L, r=M+1; r!=R+1||l!=M+1; i++){ if((r!=R+1&&l

[백준 BOJ 10816번] 숫자 카드 2 (C++ ) [내부링크]

틀린코드 #include #include using namespace std; int find_result(int* arr1,int find_num,int start,int end) { int count = 0; int tmp; while (start input_num; int arr1[500001]; for (int i=0; i < input_num; i++) cin >>arr1[i]; sort(arr1, arr1+input_num); int n_input_num; cin >>n_input_num; int find_num; int result = 0; for (int i = 0; i < n_input_num; i++) { cin>>find_num; result = find_result(arr1,find..

백준 14502번 연구소 (C++) [내부링크]

문제정답 코드#include #include #include #include #include #include using namespace std; const int dx[] = {0,1,0,-1}; const int dy[] = {1,0,-1,0}; int n,m; int do_find(vector to_find) {//맵이 고정됐으니까 이제 각 값들에 대해서 안전영역이 몇개인지 찾기. vector vis(n,vector(m,0)); for (int i=0;i < n; i++) { for (int j =0;j < m;j++) { if (to_find[i][j] == 2 && vis[i][j] == 0) { vis[i][j] = 1; queue Q; Q.push({i,j});//y,x while (!Q.e..

도서관리 프로그램 최종본 (씹어먹는 C) [내부링크]

/*문제 1 길이가 최대 100 인 문자열을 하나 입력 받아서 문자열을 역순으로 출력하는 함수를 만들어보세요. (난이도 : 下) 예를 들어서 "abcde" 입력 --> "edcba" 출력 함수가 할 일: 문자열의 순서를 역순으로 바꿔서 출력한다.문자열의 갯수를 세고, 제일 뒤에 제일 앞을 넣고 그걸 문자열의 길이 /2까지 반복하는 \0이 나오는 n구하고 arr[n]에 대입 arr[i]=arr[n-i] 범위는 n/2 리턴값:num 받아야하는 인자: char형 문자열 하나 */ #include int change(char* str); int main() { int num; char arr[100]; printf("문자열을 입력하세요"); scanf("%s",arr); num = change(arr); pri..

공부기록 문자열 (씹어먹는 C언어)(scanf함수에서 띄어쓰기 해결 ,화면 출력함수 변환문자 제어문자) [내부링크]

/*문자열에 들어 있는 문자의 개수를 세는 일이 많을 것 입니다. 이를 수행하는 함수를 만들어 봅시다. */ #include int word_num(char *arr,int *n);//배열, 문자열 숫자 int main() { int n; char word[] = { "long sentence" }; printf("%s \n", word); word_num(word, &n); printf("문자열의 개수는:%d", n); return 0; } int word_num(char* arr, int* n) { for (int i = 0;; i++) { if (arr[i] == 0) { *n = i+1; return 0; } } } /* char *str="abcdefghi" 과 char c_str[] = { "..

다시 천천히 -씹어먹는 C언어 에라토스테네스의 체 예제 + 계산기 예제 [내부링크]

/*자기 자신을 호출하는 함수를 이용해서 1 부터 특정한 수까지의 곱을 구하는 프로그램을 만들어보세요.*/ #include int multi(int* N, int* result); int main() { int N; int result=1; printf("N?:"); scanf_s("%d", &N); printf("%d!=:", N); multi(&N, &result); printf("%d", result); return 0; } int multi(int* N, int* result) { *result *= *N; *N=*N-1; if (*N == 0) { return 0; } multi(N, result); return 0; }//멘탈을 잡고 하기 싫은 코딩을 다시 하기 시작했다 /*계산기를 만들어보세..

배운것 기록 + 유클리드 호제법 문제 (씹어먹는 C언어) [내부링크]

/* 2 차원 배열의 각 원소를 1 씩 증가시키는 함수 */ #include /* 열의 개수가 2 개인 이차원 배열과, 총 행의 수를 인자로 받는다. */ int add1_element(int(*parr)[2], int i); //열이 2인 이차원 배열과 행의 갯수를 입력받는다. int main() { int arr[3][2]; for (int i1 = 0; i1 < 3; i1++) { for (int i2 = 0; i2 < 2; i2++) { printf("숫자를 입력하세요:"); scanf_s("%d", &arr[i1][i2]); } } add1_element(arr,3); for (int i1 = 0; i1 < 3; i1++) { for (int i2 = 0; i2 < 2; i2++) { print..

헷갈릴때 보기! 예제 포인터의 포인터 인자로 받는 함수 [내부링크]

/* 눈 돌아가는 예제. 포인터가 가리키는 변수를 서로 바꾼다. */ #include int pswap(int** pa, int** pb); int main() { int a = 1; int b = 2; int* pa, * pb; pa = &a;//pa는 a의 주소값 pb = &b;//pb는 b의 주소값 printf("pa 가 가리키는 변수의 주소값 : %p \n", pa); printf("pa 의 주소값 : %p \n \n", &pa); printf("pb 가 가리키는 변수의 주소값 : %p \n", pb); printf("pb 의 주소값 : %p \n", &pb); printf(" ------------- 호출 -------------- \n"); pswap(&pa, &pb);//a의 주소값의 주소값..

씹어먹는 C언어 함수 공부 저장 [내부링크]

/* 입력 받은 배열의 10 개의 원소들 중 최대값을 출력 */ #include /* max_number : 인자로 전달받은 크기 10 인 배열로 부터 최대값을 구하는 함수 */ int max_number(int *parr); int main() { int arr[10]; int i; /* 사용자로 부터 원소를 입력 받는다. */ for (i = 0; i < 10; i++) { scanf("%d", &arr[i]); } printf("입력한 배열 중 가장 큰 수 : %d \n", max_number(arr)); return 0; } int max_number(int *parr) { int i; int max = parr[0]; for (i = 1; i < 10; i++) { if (parr[i] > ma..

오래 걸린 문제(성적 순 배열 및 막대 그래프 출력 문제)(씹어먹는C언어) [내부링크]

/*문제 1.입력 받는 학생들의 성적이 높은 순으로 정렬하는 프로그램을 만들자. 문제 2 입력받은 학생들의 성적을 막대 그래프로 나타내는 프로그램 만들자.*/ #include int main() { int score[10];//성적 입력용 배열 int tmp;//임시 변수 int student_num = sizeof(score) / sizeof(int);//학생의 숫자 printf("10명의 학생들의 성적을 입력하세요\n"); for (int i1 = 0; i1 < 10; i1++) {//학생 성적 입력 printf("%d번째 학생의 성적은:", i1 + 1); scanf_s("%d", &score[i1]); if (score[i1] > 100 || score[i1] < 0) {//학생 성적이 올바른 숫..

(흔적)코딩 공부 기록 switch문과 배열 (씹어먹는 C언어 정답) [내부링크]

/*문제 1번 스위치문에 값 부분에 왜 정수만 와야하는가?*/ /*정답: 스위치문은 점프 태이블을 사용하는데 점프태이블을 위해서는 정해진 정수만을 입력해야지 변수가 입력되면 사용할 수 없기 때문에 */ /*임의의 실수에서 소수점 이하 두자리수만 추출하여 정수형 변수에 대입하라. 예를들어 사용자로부터 입력받은 실수 f 가 12.3456이라면 34만 추출한다. 이때 반올림은 고려하지 않아도 상관없다. f 가 달러 단위의 화폐 액수라고할 때 센트 단위만 추출해내는 경우라고 생각하면 된다. 다음 ???? 자리에 적합한 연산식을 작성하는 문제이다 printf("실수를 입력하시오 : "); scanf("%f", &f); i = ? ? ? ? printf("i=%d\n", i); 이 문제의 핵심은 음수이거나 소수점 ..

백준 2852번 NBA 농구(C++) [내부링크]

문제정답 코드#include #include #include #include using namespace std; string bef_time; string make_ret_time(string ret, string bef,string now) { char arr[6]; arr[0] = now[0] -bef[0] + '0'; arr[1] = now[1] - bef[1] + '0'; arr[2] = ':'; arr[3] = now[3] - bef[3] + '0'; arr[4] = now[4] -bef[4] + '0'; if (arr[4] input_num >> time; if (input_num == 1) first_score++; else second_score++; if (first_score > se..

백준 3474번 교수가 된 현우(C++) [내부링크]

문제정답 코드#include #include #include #include using namespace std; int t_n; int f_n; int main() { ios:: sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; int a; for(int i = 0; i < n; i++){ cin >> a; int ret2 = 0, ret5 = 0; for(int j = 2; j num; arr.push_back(num); backup.push_back(num); } sort(arr.begin(),arr.end()); int num = arr[0]; int tnum = num; while (num) { if (tnum%4 == 0) { t_n..

씹어먹는 C언어코딩 공부 [내부링크]

//문제 2 피라미드 모양을 거꾸로 만드시오 #include int main() { int num;//층수 printf("피라미드의 층수를 입력하시오"); scanf_s("%d", &num);//피라미드 층수 입력 for (int i=0; i

백준 10709번 기상캐스터(C++) [내부링크]

문제정답 코드#include #include #include #include using namespace std; int main() { ios:: sync_with_stdio(0); cin.tie(0); int n,m; cin >> n >> m; vector arr(n,vector(m,0)); for (int i = 0;i < n;i++) { string s; cin >> s; for (int j=0; j < m;j++) { if (j != 0 && arr[i][j-1] == 0) arr[i][j] = 1; else if (j == 0 || s[j-1] == '.' && s[j] == '.' && arr[i][j-1] == -1) arr[i][j] = -1; else arr[i][j] = arr[i][..

백준 2870번 수학숙제(overflow주의)(C++) [내부링크]

문제정답 코드#include #include #include #include using namespace std; void s_toi(string s,vector &arr) { char ar[100]; int aridx=0; int size = s.size(); long long ret =0; int flag = 0; for (int i=0;i n; vector arr; for (int i=0;i < n; i++) { string s; cin >> s; s_toi(s,arr); } sort (arr.begin(),arr.end(),cmp); for (auto it : arr) { cout

백준 4559번 비밀번호 발음하기(C++) [내부링크]

문제정답 코드#include #include #include using namespace std; int is_have_small(char a) { if (a == 'a' || a=='e' || a =='i' || a== 'o' || a=='u') return (1); // cout

씹어먹는 C언어첫번째 코딩 과제 2022. 1. 7. 23:43 [내부링크]

요즘 나는 코딩 공부중이다. 42 서울 체크인 미팅까지 끝내고 라피신 선착순 신청이 남았는데 라피신에서 살아남기 위해서는 c언어를 공부해야한다. 그렇기에 요즘 씹어먹는 c언어를 공부하고 있다. https://modoocode.com/12#page-heading-6 씹어먹는 C 언어 - modoocode.com 현재 공부하고 있는 강의다. 처음으로 스스로 문제를 풀어봤다. 내가 할 수 있는 방법들을 동원해봐서 푸는데 왜 사람들이 손으로 코딩을 한다는지 알정도로 그냥 머리속으로만 풀고 컴퓨터에 타이핑 하는 방법보다 손으로 쓰다보니까 더 머리가 잘 정리 되는걸 느꼈다. Previous imageNext image 혼자서 열심히 끄적거린 노트 풀고나니 쾌감이 엄청나다. 겨우 하루에 문제 하나 푼 거였지만 제대로..

백준 c++백준 1181번 단어정렬 (부제 :c++의 말도 안되는 편리함) [내부링크]

실패코드 #include #include using namespace std; int ft_strcmp(char *str1, char *str2) { if(strlen(str1) !=strlen(str2)) { if (strlen(str1) > strlen(str2)) return (1); else return (-1); } while (*str1 == *str2 && *str1 && *str2) { str1++; str2++; } return (*str1 - *str2); } int main() { int inputnum; cin >> inputnum; char **arr = new char*[inputnum + 1]; char *tmp; for (int i = 0; i < inputnum; i++) ..

백준 c++[백준 BOJ 10816번] 숫자 카드 2 (C++ ) [내부링크]

실패코드 #include #include using namespace std; int find_result(int* arr1,int find_num,int start,int end) { int count = 0; int tmp; while (start input_num; int arr1[500001]; for (int i=0; i < input_num; i++) cin >>arr1[i]; sort(arr1, arr1+input_num); int n_input_num; cin >>n_input_num; int find_num; int result = 0; for (int i = 0; i < n_input_num; i++) { cin>>find_num; result = find_result(arr1,find..

백준 c++백준 11866번 요세푸스 문제 [내부링크]

#include #include using namespace std; int main(){ queue people; int n, k, removedPeopleNum = 0; int current = 1; cin >> n >> k; for(int i = 1; i

백준 c++1654번 랜선 자르기 문제 [내부링크]

실패코드 //시간 초과 코드 아무리 시간을 줄이려고 노력해도 이분탐색을 사용하지 않는다면 절대로 풀수 없는 범위가 나오는 문제이다. #include #include using namespace std; int main() { int k,n; cin >> k >> n; int count, result; int *input = new int[k]; for (int i =0; i < k; i++) { cin >> input[i]; } count = 0; sort(input ,input +k); int tk = k; for (int i = input[tk-1] ; tk >0; tk--) { count = 0; for (int j = 0; j < k; j++) { count +=input[j] / i; } if ..

백준 c++백준 7568 덩치 클래스 복습 [내부링크]

이 문제는 분명 클래스를 쓰지 않고도 더 짧게 풀 수 있었다. 하지만 굳이 클래스를 사용해 본건 생성자에 대해서 복습이 필요했고 더 보기 깔끔한 코드를 만들어보기 위해서였다. 확실히 가독성과 코드 짤 때 머리속에 정리가 잘 되는 느낌이다. calloc 함수를 사용해봤는데 malloc과 달리 인자를 넣는 방식이 살짝 달랐다. void *malloc(size_t size); void *calloc(size_t num, size_t size); 이렇게 돼있어서 처음에 멀록처럼 사용했다가 이렇게 바꾸었다. #include #include using namespace std; class human { private: int kg; int len; public : human(int kg, int len): kg..

백준 c++1165번 좌표 정렬하기 2(sort 함수 응용) [내부링크]

#include #include using namespace std; typedef struct point { int x; int y; } mpoint; //bool xcompare(mpoint a, mpoint b) //{ // return(a.x < b.x); //} bool ycompare(mpoint a, mpoint b) { if (a.y < b.y) return true; else if (a.y == b.y) { if (a.x < b.x) return (true); } return false; } int main() { int point_num; cin >> point_num; mpoint * position = new mpoint [point_num]; for (int i = 0; i < p..

백준 c++백준 1620번 포켓몬마스터 이다솜 [내부링크]

/* 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습 입력 : 포켓몬의 개수 N ,맞춰야 하는 문제의 개수 M 1 ~ N 포켓몬 이름, 문제 : M개 숫자는 문자로 문자는 숫자로! 조건 : 1 matter_n; mons *monster = new mons [mon_n]; mons *monster_name = new mons [mon_n]; for (int i = 0; i < mon_n; i++) { cin >> monster[i].name; monster_name[i].name = monster[i].name; monster[i].number = i + 1; monster_name[i].number =i+1; } //cout > input..

백준 (C언어)백준 1157번 단어 공부 [내부링크]

#include #include #include int main() { char arr[1000009]; int i = 0; int check[26] = {0}; int max = 0; char alph; scanf("%s", arr); int size = strlen(arr); for (int k = 0; k < size; k++) { for (int i = 0;i < 26 ;i++) { if (arr[k] == 'A' + i || arr[k] == 'a' + i) check[i]++; } } for (int i = 0; i < 26; i++) { if (check[i] > max) { max = check[i]; alph = 'A' + i; } else if (max != 0 && max == che..

백준 2910번 빈도정렬 (C++)(stable, unordered_map, find와 find_if,람다식,stable_sort) [내부링크]

문제와 정말 정말 오래걸린 문제이다.살짝 부끄럽지만 일단은 내가 vector, pair ,stable_sort, map ,unordered_map,find,find_if 등에 대해서 공부하는 시간이 됐다.정답 코드#include #include #include #include #include using namespace std; bool my_sort(pair a,pair b) { return (a.second > b.second); } int main() { ios :: sync_with_stdio(0); cin.tie(0); int n,c; cin >> n >> c; vectorarr; int num; for (int i=0;i < n;i++) { cin >> num; auto a = find_if(..

백준 2828번 사과 담기 게임(C++) [내부링크]

문제정답 코드#include using namespace std; int main() { int N,M,j; cin >> N>> M >> j; int L = 1; int aloc; int cnt =0; M--; for (int i=0;i < j;i++) { cin >> aloc; if (L

백준 1992번 쿼드트리 (C++) [내부링크]

문제정답 코드#include #include #include #include using namespace std; int check_all_same(int x,int y,int size,vector &bmap) { int start = bmap[y][x]; for (int i=y; i < y + size;i++) { for (int j=x; j

백준 2583번 영역 구하기(C++) [내부링크]

문제정답 코드#include #include #include #include #include #include #include #include using namespace std; #define X first #define Y second int map[102][102]; int mx[4] ={0,1,0,-1}; int my[4] ={1,0,-1,0}; int all; int result[10000]; // void printmap(int col,int row) // { // for (int i=col -1; i >= 0;i--) // { // for (int j=0; j < row; j++) // { // cout > row >> snum; for(int i=0; i< snum;i++) { cin >> ..

백준 2468번 안전영역(C++) [내부링크]

문제정답 코드#include #include #include #include #include #define X first #define Y second using namespace std; const int dx[]= {0,1,0,-1}; const int dy[]= {1,0,-1,0}; int main() { ios :: sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector arr(n,vector(n,0)); vector vis(n,vector(n,0)); for (int i=0;i > arr[i][j]; } } int len = 1; int result = -1; int max = 1; while (result !=0) { result = 0; for (..

백준 1012번(C++) [내부링크]

문제정답 코드#include #include #include #include using namespace std; const int mx[] = {0,1,0,-1}; const int my[] = {1,0,-1,0}; int main() { int t,m,n,k; cin >> t; int cnt = 0; for (int i =0; i < t;i++) { cin >> m >> n>> k; vector arr(n,vector(m,0)); vector vis(n,vector(m,0)); for (int j =0; j < k;j++) { int x,y; cin >> x>> y; arr[y][x] = 1; } for (int iy = 0;iy < n;iy++) { for (int ix = 0;ix < m;ix++..

백준 (C언어)백준 1152번 단어의 갯수 scanf ("%[^\n]") [내부링크]

이 문제는 처음에 scanf를 스페이스 말고 개행을 기준으로 받는 방법을 몰라서 헤맸었다. #include #include #include int main() { char arr[1000000]; scanf("%[^\n]", arr); int count = 1; int size = strlen(arr); for (int i = 0; i < size; i++) { if (arr[i] == ' ') count++; } if (arr[0] == ' ') count--; if (arr[size - 1] == ' ') count--; printf("%d", count); } 이 글은 코딩 꼬꼬마 시절에 푼 문제를 보관한 글로 네이버에 저장해둔 글을 옮긴 글입니다. 혹시나 참고하시는 부분에 이상한 부분이나 질문이 ..

백준 (C언어)백준 2869번 달팽이 (시간복잡도 문제) [내부링크]

이전에 풀었던 문제중에 시간복잡도에 자꾸 걸렸던 문제가 있었는데 시간복잡도를 줄이는 방법은 1. 함수의 호출의 수를 최대한 줄인다. 2. 미리할 수 있는 연산은 미리 끝내고 반복문에 들어간다. 3. 이번에 풀 문제인데 탐색할 때 값을 계속 올리면서 찾는 것보다 수식으로 풀고 코드를 짜는게 낫다는 거다. #include int main() { unsigned int up, down; unsigned int high; scanf("%d%d%d", &up, &down, &high); unsigned int day = 1; unsigned int cha = up - down; unsigned int real_high = high - down; while (1) { if (real_high =high 니까 이항해..

백준 (C언어)백준 2775번 부녀회장문제 재귀 아닌 배열문제 [내부링크]

#include int main() { int input, floor, room; scanf("%d", &input); int arr[15][15]; for (int i = 1; i

백준 (C언어)백준 10757번 큰수 A+B문제 리버스 사용 [내부링크]

#include #include void reverse(char* arr) { int len = strlen(arr); for (int i = 0; i < len / 2; i++) { char tmp = arr[i]; arr[i] = arr[len - i - 1]; arr[len - i - 1] = tmp; } } int main() { char arr1[100003] = { 0 }; char arr2[100003] = { 0 }; char result[100003] = { 0 }; scanf("%s %s", arr1, arr2); int i = 0; int arr1_size = strlen(arr1); int arr2_size = strlen(arr2); int size = arr1_size; int ..

백준 (C언어)백준 1002번 터렛 원의 내접 외접 조건문제 [내부링크]

처음에 엄청 삽질을 했다. 공식으로 접근을 하려고 했고 그 사투의 흔적이 여기에 있다 처음에 원이 만나는 경우를 외접만 생각해서 왜 안되지 싶었는데,, 옛날에 수능 준비할 때 맨날 풀었던 외접 내접을 까먹어서 다시 복습을 해봤다. 두 원의 위치 관계는 두점에서 만나거나 아에 안 만나거나 한점에서 접하거나 아에 일치하는 경우 이렇게 나뉜다. 설명의 편의를 위해 두 원의 반지름을 r1 r2 로 적고 두 원의 중심사이 거리를 d라고 하겠다. 원이 두 점에서 만나는 경우: d가 r1 + r2 보다 큰 경우 원은 절대로 만나지 못한다. 0인 조건이 된다. 그리고 d와 작은반지름의 합이 큰반지름보다 작으면 원은 만날수 없기 때문에 이 두개의 조건을 정리하면 d >r1 +r2 && d >큰반지름 -작은반지름 이 된다..

백준 (C언어)그리디 알고리즘 단어수학 백준1339번 [내부링크]

실패코드 #include #include int tenup(int a) { int k = 1; for (int i = 0; i < a; i++) k *= 10; return (k); } intwhere_is_alph(char a, char* arr, int len) { int i = 0; int result = 0; if (len == 0) return 0; while (1) { if (arr[i] == a) result += tenup(len - i - 1); if (i == 7) break; i++; } return (result); } void sort_arr(int* arr) { int tmp; for (int i = 0; i < 26; i++) { for (int j = 0; j < 25-i; ..

백준 (C언어)백준 1331번 구현 알고리즘 시뮬레이션(나이트) [내부링크]

#include int plus(int k) { if (k < 0) return(-k); return k; } int main() { char knight[3]; char next[3]; int check = 1; int first = 0; for (int i = 0; i < 18; i++) { scanf("%s", knight); if(first!=0) if (plus(knight[0] - next[0]) + plus(knight[1] - next[1]) != 3) check = -1; scanf("%s", next); if (plus(knight[0] - next[0]) + plus(knight[1] - next[1]) != 3) check = -1; first = 1; } if (check == 1..

백준 (C언어)백준 14503 로봇청소기(구현 시뮬레이션 맵탐색) [내부링크]

틀린코드에요! #include #include int main() { int length, width;//세로, 가로 int x, y, direction;//방향은 0:북, 1:동, 2:남, 3:서 int** map;// 세로 가로, 0육지 1바다 scanf("%d %d", &length, &width); map = (int**)malloc(sizeof(int*) * (length)); //int move[4][2] = {{0,-1}, {1,0}, {0,1}, {-1,0}};//북, 동, 남 ,서 int move[4][2] = { {0,-1}, {-1,0} ,{0,1} ,{1,0} };//북,서,남,동 scanf("%d %d %d ", &x, &y, &direction); for (int i = 0; i..

백준 (C언어)백준 10828번 스택 스택 구현문제 [내부링크]

#include #include #include #define max_size 1000000 int stack[max_size]; int top=-1; void push(int x) { //if (top == max_size - 1) //printf("stackoverflow\n"); //else //{ top++; stack[top] = x; //} } void pop() { if (top == -1) printf("-1\n"); else { printf("%d\n", stack[top]); top--; } } int main() { int input; int len; int x; scanf("%d", &input); char order[10]; for (int i = 0; i < input; i++)..

백준 (C언어)백준 DFS와 BFS문제 1260번 [내부링크]

#include int mat[1001][1001] = { 0 }; int visited[1001] = { 0 }; int x, y; int queue[1001]; void dfs(int(* mat)[1001], int* visited, int v,int n) { visited[v] = 1; for (int i = 1; i

백준 (C언어)백준2667번 단지번호 붙히기 [내부링크]

#include #include void apart(int **map,int **visited, int mapsize,int*result,int* count,int i,int j) { //printf("now:%d %d\n", i, j); //if (i + 1 < mapsize && j + 1 < mapsize && 0 < i - 1 && 0 < j - 1) //{ if (i + 1 < mapsize) { if (visited[i + 1][j] == 0 && map[i + 1][j] == 1) { visited[i + 1][j] = 1; result[count[0]]++; apart(map, visited, mapsize, result, count, i + 1, j); } } if (0

백준 2178 BFS미로탐색(C언어) [내부링크]

#include void ctoi(char* arr, int* ar,int m) { for (int i = 0; i < m; i++) { ar[i] = arr[i] - 48; //printf("%d\n", ar[i + 1]); } } int cue[40000]; int front = 0; int rear = 0; void bfs(int y, int x,int (*map)[200],int xmax,int ymax)//bfs는 방향벡터 순서와도 관련이 있는가? { int popx = x; int popy = y; while (front

백준 토마토 성공!! 1068번 BFS(C언어) [내부링크]

#include int map[1001][1001] = { -1 }; int cue[1100000] = { 0 }; void bfs(int length,int width) { int count = 0; int front = 0; int rear = 0; int pop; for (int i = 0; i < length; i++) { for (int j = 0; j < width; j++) { if (map[i][j] == 1) cue[rear++] = i * width + j; } } int first = rear; while (front max) max = map[i][j]; if (map[i][j] == 0) check = 1; } //printf("\n"); } //printf("check: %d t..

백준 트리 1068번 DFS(C언어) [내부링크]

#include int count = 0; dfs(int now_node, int* node, int nodenum,int root) { int check = 0; for (int i = 0; i < nodenum; i++) { if (now_node == node[i]) { check++; //printf("i: %d\n", i); dfs(i, node, nodenum,root); } } if (check == 0)//now_node>=0&&now_node!=root&& count++; } int main() { int node[50]; int nodenum,ignore_node; int root=100; scanf("%d", &nodenum); for (int i = 0; i < nodenum; i+..

백준 피보나치 함수 1003번 [내부링크]

이문제는 동적 프로그래밍을 하면서 취코테랑 같은 문제라고 생각해서 접근했다가 안 풀려서 상당히 당황 했었지만 내 나름의 동적프로그래밍을 해봤다.. 하지만 이게 가장 효율적인 코드인가는 잘 모르겠다. 내 코드 #include int done[41] = { 0 }; int dzero[41] = { 0 }; void fibo(int n) { dzero[0] = 1; dzero[1] = 0; done[0] = 0; done[1] = 1; if (n < 2) return; int check = 2; for (int i = 2; i

백준 타일채우기 문제 dp [내부링크]

어려운 문제였다. 많이 헤맸고 내가 헤맸던 과정들을 정리해봐야겠다. 재귀 문제와 점화식 세우는 문제는 정말 유사한 면이 많다. 내가 스스로 짜는거는 도저히 못하겠는데 남들 코드를 보면 정말 신비롭다는 생각이다. 이걸 성공을 하긴 했지만 온전히 내 힘으로 한게 아니기 때문에 언젠가 다시 해결해봐야겠다. 느낀점은 이만하고 이제 문제를 설명해보자. 문제는 매우 간단하다. 우리는 일단 문제 이해는 어렵지 않을테니 문제 이해는 넘어가겠다. 문제 해결을 위해 길이가 작은 부분부터 문제를 봤다. 우선 첫번째로 이 문제는 길이가 짝수일때만 가능하다. 타일들의 넓이는 다 짝수기 때문에 짝수들을 이용해서 넓이가 홀수인 사각형을 만들 수 없기 때문에 우리는 하나 특징을 찾았다. 1번 특징 : 길이는 반드시 짝수이고 ..

백준 마인크래프트 18111번 브루스포스(C언어) [내부링크]

#include #include int to_high(int high, int** arr, int width, int length,int inventory) { int count = 0;//인벤토리 추가될 블럭 int time = 0; int check; for (int i = 0; i < length; i++) { for (int j = 0; j < width; j++) { check = high - arr[i][j]; if (check > 0) { //printf("up\n"); count -= check; time+=check; } else if (check < 0) { //printf("down\n"); count -= check; time += -2*check; } } } if (count + ..

백준 재귀함수가 뭔가요?17478번(C++) [내부링크]

백준 17478번 자꾸 argc argv로 풀려다가 틀렸었다.... #include #include void recur(int i,int n) { if (i == n+1) { return; } if (i == 0) std::cout

백준 한수문제 1065번문제 [내부링크]

#include int check_han(int a) { if (a == 100 || a == 1000) return (0); if (a > 100) { if (((a / 100) - ((a / 10) % 10)) != ((a / 10)% 10) - (a % 10)) return(0); } return (1); } int main() { int input; scanf("%d", &input); int i = 1; int count = 0; while (i

백준 4673번 셀프넘버 문제(C언어) [내부링크]

#include int main() { int num = 97; int result; printf("1\n3\n5\n7\n9\n20\n31\n42\n53\n64\n75\n86\n97\n"); result = num; while (num < 10000) { while (num >10) { result += num % 10; num = num / 10; } result += num; num = result; printf("%d\n", result); } } 처음에 문제 이해를 잘 못해서 어떤 숫자의 셀프넘버를 계속 올라가면서 구하는 함수를 만들었다... 문제 이해가 어렵군.. #include int check_selfnum(int a) { int result; int tmp = a; int i = 1; wh..

백준 8958(C) strlen함수사용 [내부링크]

#include int main() { int a; scanf("%d", &a); int count = 0; int sum[80] = { 0 }; char arr[80][80]; int i = 0; while (i < a) { scanf("%s", arr[i]); i++; } int k = 0; int j = 0; while (k < i) { j = 0; count = 0; while(arr[k][j]== 'X' || arr[k][j] == 'O') { if (arr[k][j] == 'O') count++; else if(arr[k][j]== 'X') count = 0; sum[k] += count; j++; } printf("%d\n", sum[k]); k++; } } 이게 처음 코드이다. 아니 진짜 ..

백준 A+B-4 문제 10951번 EOF [내부링크]

이 문제는 문제 풀이의 조건에 끝나는 조건이 없다. 주어진 입력파일을 가지고 입력을 받을때 더이상 읽을 데이터가 없는경우 즉 파일의 끝일때를 EOF(end of file )이라고 한다. 이 문제는 더이상 읽을 데이터가 없을 때 반복문을 종료 시켜야 한다. 원래 scnaf함수는 엔터를 칠때마다 다음 입력으로 넘어가는데 사실 컴퓨터는 개행역시 하나의 문자로 받아서 처리하기 때문이다. 즉 우리가 문자열의 끝에 널을 넣어주는 느낌으로 입력할때 더이상 읽을게 없을때를 찾아야만한다. 입력을 끝까지 읽은 후에 그 다음거에 오는경우 EOF인 것이다. 일반적인 키보드에서는 EOF상태를 전송 할 수 없으므로 윈도우에서는 Ctrl Z 리눅스는 Ctrl + D이다. scanf에서는 끝에 도달하면 -1을 반환하고 와일문의 조건..

C언어 실행법과 write함수(리터럴개념) (42서울 라피신 꿀팁) [내부링크]

안녕하세요 7기 카댓 joushin입니다. 제가 라피신 때 작성했던 팁을 정리해서 공유하고자 합니다. C언어의 컴파일과 write함수에 대해서 이야기하고자 합니다. 우선 C언어에 대한 이해가 필요합니다. C언어를 실행하는 방법은 다음과 같습니다. C언어 -컴파일(컴파일러)=>실행파일 생성 C언어는 컴파일러를 이용해서 c파일들을 묶어주는데 저희는 gcc라는 컴파일러를 이용할꺼에요. 컴파일을 할때 저희는 무조건 main이 있어야만해요. 왜냐하면 컴파일러는 무조건 main함수를 찾아서 그걸로부터 실행파일을 만들기 시작하기때문이죠.(그것이 컴파일이니까) 그렇게 gcc main.c를 해주면 a.out이라는 실행파일이 생성 될껍니다. 이 실행파일을 ./a.out을 사용해서 실행 해볼 수가 있어요. 슬랙에 많은 테스..

VIM사용법 + Vim 단축키(42서울 라피신 꿀팁 + QnA) [내부링크]

안녕하세요 7기 카댓 조신입니다. 제가 라피신때 썻던 팁을 공유합니다. 안녕하세요 조신입니다. 오늘 아침날씨는 선선하네요. 일교차가 심하다고하니 감기 유의하세요! 다들 시험은 잘치르셨나요? 첫 시험이니 너무 유념치말고 주말간 러쉬 화이팅입니다!! 오늘은 vim에서 제가 유용하게 사용하는 단축키들에 대해서 정리 해보겠습니다. vim에서 복사 붙혀넣기가 cmd+c v가 안되서 많이 답답하셨죠? 오늘은 관련해서 팁을 공유하고자 합니다. i를 누르면 들어가는 insert모드 v를 누르면 들어가는 visual 모드 처음들어가면 있는 상태를 일반모드 :을 누르면 들어가는 명령 모드가 있습니다. 오늘 사용하는 명령어의 시작은 일반 모드에서 시작합니다. 다른모드에서 일반모드로 돌아가는 방법은 esc키를 누르면 됩니다...

SSH와 git 사용법 (42서울 라피신 꿀팁)(+ 라피신 팁 QnA) [내부링크]

제가 라피신때 공유 했던 글을 정리해서 다른 카댓들이 더 쉽게 공부할 수있게 올려드리겠습니다. 문제가 되면 바로 삭제 진행하겠습니다. 안녕하세요 조신입니다. 많은 분들께서 ssh키와 깃에 대해서 헷갈려하시길래 정리 해봤습니다. 터미널 실행 – ssh-keygen 입력 해줍니다. cat ./.ssh/id_rsa.pub 입력 후 나오는 긴 문자열 복사합니다. (cmd+c) https://profile.intra.42.fr/gitlab_users 에서 복사한 문자열을 붙여넣기 해서 등록해 주세요. 자세한 내용은 바탕화면에 play me에서 다 있으니 동영상 참고 해주세요. QnA Q. 맥에서 로그아웃하면 파일들이 다 사라지나요? A. 아닙니다. 로그아웃하고 다른 컴퓨터에 로그인해도 그 파일들은 다 그대로 있어..

vim과 zsh설정법 (42서울 꿀팁 + QnA) [내부링크]

안녕하세요 7기 카댓 joushin입니다 이전에 제가 라피신 하면서 올렸던 글들을 다른 분들도 도움을 받았으면 좋겠어서 정리해서 공유합니다. 안녕하세요 조신입니다 첫번째 글 안녕하세요 조신입니다. 오늘은 어제보다는 따뜻한 아침이네요. 오늘은 첫 시험날인데 다들 컨디션 조절은 하고계신가요? 열심히 하는건 좋지만 조급한 마음에 무리를 하지 않았으면 하는 마음이 있네요. 다들 건강을 잃지 않고 끝까지 갔으면 좋겠습니다. 오늘은 뭘 정리해볼까 하다가 많은 분들이 공유해주신 쉘 환경 설정과 빔 설정에 대해서 정리 해보려고 합니다. Q. vim이 뭐에요? A. 저희는 vim이라는 강력한 도구를 이용해서 코드를 짤겁니다. 많은 분들이 vs코드나 vstudio를 사용해서 코드를 짜보셨을텐데요. vim은 실제로 많은 개..

라피신 합격자 후기 및 합격 팁 (42서울 꿀팁)(7기 합격생 + 6기 탈락생) [내부링크]

안녕하세요 저는 7기 카댓 joushin(조신)이라고 합니다. 라피신을 저는 6기때 한번 떨어지고 7기때 다시 지원해서 7기 1차 피신 레벨랭킹 4등, 4번의 시험을 전부 100점을 맞고 당당히 합격했습니다. 제가 느낀 라피신의 합격팁에 대해서 공유해드리고자 합니다. 합격 당시 레벨 및 시험점수 공개 제 합격 레벨이고요 시험과 러쉬 성적입니다. 42서울 교육과정은 어떻게 되나요? 42서울은 파리의 유명한 교육기관인 42에콜에서 라이센스를 사와서 한국에서 진행중인 교육과정입니다. 42서울링크입니다. -- https://42seoul.kr/seoul42/main/view 42 서울 (재)이노베이션 아카데미의 소프트웨어 개발자 양성 프로그램입니다. 교수, 교재, 학비가 없는 3무 교육 프로그램 42seoul...

백준 2178번 미로탐색 (C++) [내부링크]

문제최단 거리 이야기가 나온다는 것을 보고 bfs문제임을 알 수가 있다.정답 코드#include #include #include #include using namespace std; const int dx[] = {0,1,0,-1}; const int dy[] = {1,0,-1,0}; int main() { int n,m; string s; ios :: sync_with_stdio(0); cin.tie(0); cin >> n >> m; vector arr(n + 1,vector(m + 1,0)); vector vis(n + 1,vector(m + 1,0)); for (int i=0;i < n;i++) { cin >> s; for (int j=0;j < m; j++) { arr[i+ 1][j + 1] = ..

백준 4375번 1(C++) [내부링크]

문제처음에 문제 이해가 잘 안됐다.1로만 이루어졌다는게 무슨말인가 했는데 그냥 몇을 곱해서 1111 111111 11111111 이런식으로 만들라는 뜻이었다.3의 경우 배수로 이뤄지는 가장 짧은 1로 이뤄진 수는 111 이라서 이렇게 나온다.7인 111111 이런식정답 코드#include using namespace std; int A; long long result(long long n ) { if (n == 1 || A == 1) return (1); else { for (long long i =0;i < 10; i++) { if (((A * i) + n) % 10 == 1) { return (result(((A * i) + n)/10) +1); } } } } int main() { while (ci..

백준 1929번 곱셈(C++) [내부링크]

문제문제는 간단해 보이지만 쉽게 풀리지 않는다.필수적으로 알아야 하는게 있는데지수법칙 : a^(n+m) = a^n * a^m모듈러 성질 : (a*b)%c = (a%c * b%c)%c이 두가지를 알아야만 한다.지수법칙은 아마 왠만하면 알 것 같은데 모듈러 성질은 곱해서 나누던 나눠서 곱하든 값은 같다는 것이다.증명은 수학자들이 해뒀으니 위키백과를 보자.그냥 구현 하면 시간초과 납니다.(왜 저 정답률이겠어요..)정답 코드#include #include using namespace std; typedef long long ll; int A,B,C; ll p(ll x) { if (x == 1) return (A%C); ll k = p(x/2)%C; if (x%2 == 0) return (k * k % C); e..

백준 3986번 좋은단어 (C++)(부제 맞왜틀..) [내부링크]

문제정답 코드#include #include #include #include using namespace std; stack a; int check(string s) { if (s.size()%2 != 0) return (0); for (auto it : s) { if (a.empty()) a.push(it); else if (a.top() == it) a.pop(); else a.push(it); } char c1,c2; while (!a.empty()) { c1 = a.top(); a.pop(); if (a.empty()) return (0); c2 = a.top(); a.pop(); if (c1 != c2) { while (!a.empty()) { a.pop(); } return (0); } } r..

백준 1940번 주몽(C++) [내부링크]

문제정답 코드#include #include #include using namespace std; vector input_ar; int main() { cin.tie(0); ios :: sync_with_stdio(0); int n,m,input; int cnt =0; cin >> n >> m; for (int i=0;i > input; input_ar.push_back(input); } sort(input_ar.begin(), input_ar.end()); for (int i =0; i < n;i++) { for (int j=n-1;j > i;j--) { if (input_ar[j] + input_ar[i] == m) cnt++; else if (input_ar[j] +input_ar[i] < m) b..

백준 1213번 팰린드롬 만들기(C++) [내부링크]

문제정답 코드#include #include #include using namespace std; char result[52]; inta,b; intnext_two_same(char a,char b) { return (a == b); } int main() { string s; cin >>s; sort(s.begin(), s.end()); b = s.size() - 1; intnum = 1; int flag =0; int i =0; while (i < s.size()) { if (i + 1 >= s.size()) { result[a] = s[i]; if (flag) { cout

백준 9375번 패션왕 신해빈(C++) [내부링크]

문제정답 코드#include #include #include using namespace std; ///필요한 건 숫자뿐. map dic; voidcase_print() { intnum; int result; num = 0; result =1; for (auto it : dic) { num = it.second; result *=(num + 1); } cout c_n; for (int i=0; i < c_n;i++) { intb; cin >> b; string cloth; string type; for (int j=0 ; j < b;j++) { cin >> cloth >> type; int num = dic[type]; dic[type] = num + 1; } case_print(); dic.clear(..

백준 1620번 나는야 포켓몬 마스터 이다솜(C++) [내부링크]

문제문제가 너무 길어서 잘랐어요 여기만 읽어도 풀 수 있습니다. (난이도는 실버 4)정답 코드#include #include #include #include using namespace std; map dic; // int s_to_num(string s) // { // istringstream ss(s); // int x; // ss >> x; // return (x); // } string arr[1000000]; int main() { ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0); int in_num; int f_num; string s; cin >> in_num >> f_num; for (int i = 1; i > s; arr[i] = s; dic.i..

백준 2559번 수열 (C++) [내부링크]

문제정답 코드#include #include #include using namespace std; int main() { ios :: sync_with_stdio(0); cin.tie(0); int day; int c_time; cin >> day >> c_time; vector tp(day, -2147483647); vector sum(day, -2147483647); for (int i=0 ;i < day;i++) { cin >> tp[i]; if (i == c_time -1) { sum[i] =0; for (int j = 0; j < c_time; j++) { sum[i]+= tp[j]; } } else if (i >= c_time) sum[i] = sum[i - 1] + tp[i] - tp[i-c..

백준 9996번 한국이 그리울 땐 서버에 접속하지 (C++) [내부링크]

문제정답 코드#include #include using namespace std; char result[101]; int main() { ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; string input; cin >>input; string head; string tail; for (int i=0; i < input.size(); i++) { if (input[i] == '*') { head = input.substr(0, i); tail = input.substr(i+1, input.size()); break; } } string cmp; int i; for (i=0; i < n; i++) { cin >> cmp; if (..

백준 11655번 ROT13(C++) [내부링크]

문제정답 코드#include #include using namespace std; int main() { cin.tie(0); ios:: sync_with_stdio(0); string s; getline(cin, s); for (int i=0; i < s.size(); i++) { if ('a'

백준 1159번 농구경기 (C++) [내부링크]

문제정답 코드#include #include using namespace std; char alpha[26]; int main() { ios :: sync_with_stdio(false); cin.tie(0); cout.tie(0); string s; int n; intflag= 0; cin >> n; for (int i=0; i < n; i++) { cin >>s; alpha[(s[0] - 'a')]++; } for (int i=0; i < 26; i++) { if (alpha[i] >= 5) { cout

백준 10988번 팰린드롬인지 확인하기(C++) [내부링크]

문제정답 코드#include #include using namespace std; int check_pel(string &s) { int first= 0; int last = s.size(); last--; while (first < s.size()/2) { if (s[first] != s[last]) return (0); first++; last--; } return (1); } int main() { string s; cin >> s; cout

백준 2979번 트럭주차 (C++) [내부링크]

문제정답 코드#include #include using namespace std; int main() { int A,B,C; cin >> A >> B>> C; int come[3]; int out[3]; for (int i = 0; i < 3; i++) {cin >> come[i] >> out[i];} sort (come, come+3); sort(out, out+3); int level = 0; int cost = 0; for (int i=0; i < out[2];i++) { for (int j = 0; j < 3; j++) { if (come[j] == i) level++; if (out[j] == i) level--; } if (level == 1) cost +=(level *A); else if ..

백준10808번 알파벳 개수(C++) [내부링크]

문제정답 코드#include #include using namespace std; char ar[26]; int main() { string s; cin >> s; for (auto it : s) { ar[(it -'a')]++; } for (int i=0 ;i < 26; i++) { cout

백준 2309번 일곱 난쟁이(C++) [내부링크]

정답 코드#include #include #include using namespace std; vector arr1(9,0); vector arr2(9,0); voidresult(int a1,int a2) { for (int i=0; i

배열 활용 함수(C++)(알고리즘) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 rotate() 시계 방향과 반시계 방향으로 회전하는 로직을 짤 때 쓰는 함수. #include using namespace std; vector v; int main(){ for (int i=1; i

priority queue(우선순위 큐)(C++)(알고리즘) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 우선순위 큐란 무엇인가? 우선순위 큐(priority queue)는 각 요소에 어떠한 우선순위가 추가로 부여되어있는 컨테이너를 말합니다. 우선순위 큐에서 우선순위가 높은 요소는 우선순위가 낮은 요소보다 먼저 제공됩니다. 일부 구현에서 두 요소의 우선 순위가 같으면 대기열에 포함된 순서에 따라 제공됩니다. 다른 구현에서 동일한 우선 순위를 가진 요소의 순서는 정의되지 않은 상태로 유지됩니다. 힙은 완전이진트리로 최소힙 또는 최대힙이 있으며 삽입, 삭제, 탐색, 수정에 대해 O(logN)의 시간복잡도를 갖습..

queue와 dqueue(C++)(알고리즘) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 queue란 무엇인가 큐(queue)는 먼저 집어넣은 데이터가 먼저 나오는 성질인 선입선출(FIFO, First In First Out)을 지닌 자료 구조이며, 나중에 집어넣은 데이터가 먼저 나오는 스택과는 반대되는 개념을 가졌습니다. 삽입 및 삭제에 O(1), 탐색에 O(n)이 걸립니다. 예시코드 #include using namespace std; queue q; int main() { for(int i = 1; i

Stack(C++)(알고리즘) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 stack이란 스택은 가장 마지막으로 들어간 데이터가 가장 첫 번째로 나오는 성질인 후입선출(LIFO, Last In First Out)을 가진 자료 구조입니다. 재귀적인 함수, 알고리즘에 사용되며 웹 브라우저 방문 기록 등에 쓰입니다. 삽입 및 삭제에 O(1), 탐색에 O(n)이 걸립니다. 탐색에 O(n)이 걸리는 이유는 n번째 요소를 찾는다고 가정하면 계속해서 앞에 있는 요소를 끄집어내는 과정을 n 번 반복해야 찾을 수 있기 때문입니다. 예시 코드 #include using namespace std;..

Map과 unordered_map, Set과 multiset(C++)(알고리즘) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 map map은 고유한 키를 기반으로 키 - 값(key - value) 쌍으로 이루어져 있는 정렬된(삽입할 때마다 자동 정렬된) 연관 컨테이너입니다. 레드 - 블랙트리로 구현됩니다. 레드 - 블랙 트리로 구현되어있기 때문에 삽입, 삭제, 수정, 탐색이 O(logN)의 시간복잡도를 가집니다. 고유한 키를 갖기 때문에 하나의 키에 중복된 값이 들어갈 수 없으며 자동으로 오름차순 정렬되기 때문에 넣은 순서대로 map을 탐색할 수 있는 것이 아닌 아스키코드순으로 정렬된 값들을 기반으로 탐색하게 됩니다. 또한 대..

list(C++)(알고리즘) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 list사용해보기 #include using namespace std; list a; void print(list a) { for (auto it : a) cout

c++ Vector 사용법(알고리즘) [내부링크]

find(vetor.begin(), vector.end()); 위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 코드 예시 #include using namespace std; vector v; int main(){ for (int i= 1 ; i

알고리즘 자주 사용 함수(C++)(알고리즘)(fill, memset, memcpy,sort, unique, stable_sort) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 fill()과 memset() fill()과 memset()은 배열을 초기화 할 때 쓰입니다 fill() fill()은 O(n)의 시간복잡도를 가지며 fill(시작값, 끝값, 초기화하는값)로 값을 초기화합니다. 모든 값을 기반으로 초기화가 가능합니다. void fill (ForwardIterator first, ForwardIterator last, const T& val); fill()로 배열의 값을 초기화한다고 했을 때 배열의 모든 값이 아닌 일부값을 초기화하는 경우도 있지만 보통은 전체를 초기화 합..

이터레이터(C++)(알고리즘) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 이터레이터란 이터레이터는 컨테이너에 저장되어 있는 요소의 주소를 가리키는 개체를 말하며 포인터를 일반화한 것을 말합니다. vector, map 등 각각 다르게 구현된 컨테이너들을 일반화된 이터레이터를 통해 쉽게 순회할 수 있습니다. 바로는 주소값을 반환하지는 못하며 &*를 통해 한단계 더 거쳐서 가리키는 해당 요소의 주소값을 반환할 수 있습니다. #include using namespace std; vector v; int main(){ for(int i = 1; i

pair와 tuple(C++)(알고리즘) (find,find_if, 람다식 캡쳐절) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 pair와 tuple pair와 tuple은 타입이나 자료구조는 아닙니다. C++에서 제공하는 utility 라이브러리 헤더의 템플릿 클래스이며 자주 사용되기 때문에 알아보겠습니다. pair는 first와 second 라는 멤버변수를 가지는 클래스입니다. 두가지 값을 담아야 할 때 씁니다. tuple은 세가지 이상의 값을 담을 때 씁니다. 여기서 tie는 pair이나 tuple로부터 값을 끄집어낼 때 사용되는 함수입니다. #include using namespace std; pair pi; tuple t..

컴파일에 대하여(간략설명) [내부링크]

안녕하세요 조신입니다. 7기 1차인 신입 카댓이라 많이 부족하겠지만 공부했던 것들을 공유하는 글로 정리한 글을 공유해보고자 합니다. 컴파일이란? 일단 많은 분들이 컴파일이란 무엇인가 궁금해 하십니다. 컴파일을 한마디로 말해서 소스코드를 컴퓨터가 이해할 수 있는 어셈블리어로 변환하는 과정입니다. 많은 분들이 그냥 gcc를 사용하시지만 실제로 저희가 사용하는 gcc는 컴파일만 해주는 것이 아니라 전처리, 컴파일, 어셈블리, 링킹까지 한번에 해서 실행파일을 만들어주는 엄청난 드라이버입니다. (c++에서는 g++입니다.) 전처리과정이 뭘까요? #include 로 선언된 헤더파일이나 #define 으로 정의된 매크로 등을 실제 코드로 바뀌게 됩니다. 이때 전처리과정은 텍스트들이 치환만 됩니다!(연산은 일어나지 않..

UML다이어그램 [내부링크]

시작하며 UML의 이해 UML의 구성요소 UML 모델링의 이해() 다이어그램의 종류 정적 모델링 도구() 동적 모델링 도구() UML 모델링 절차 UML 클래스 관계 시작하며 안녕하세요 42서울 카뎃 7기 조신입니다. 오늘은 코드를 짜기 전에 많은 개발자들이 사용하는 다이어그램 그리곤 하는데요. 그에 대한 표준에 대한 이해를 위한 글을 작성해보고자 합니다. UML의 이해 모델이란 현실을 단순화(기사화)를 통해서 개발할 시스템에 대한 계획이나 구상에 대한 내용을 나타낸 것이다. 모델링 방법론 모델링을 하는 방법은 크게 3가지로 나뉘는데 OMT : 시스템이 요구하는 객체를 완벽하게 기술하는 방법으로 객체 모델링 동적 모델링 기능 모델링의 종류가 있다. 객체 모델링 : 시스템에서 필요한 객..

COM 기술 [내부링크]

목차 목차 시작하며 COM 참고문서 COM의 특징. COM이란 무엇인가? 이진 표준 COM의 요구사항 COM의 특징을 요약하면 다음과 같습니다. COM의 구성요소 분류 COM 컴포넌트 COM 인터페이스 인터페이스 식별자. 인터페이스 정의 (IDL) 인터페이스 빌드 및 파생 특징 인터페이스 제작 단계 및 사용방법 상속 인터페이스의 작동 및 설명 인터페이스 구현 인터페이스 정의와 구현 인터페이스 식별(DLL) COM의 의의 COM의 특징 구성요소 인터페이스 제공 시작하며 안녕하세요 조신입니다. 오늘은 window 프로그래밍을 배우면서 사용하는 COM기술에 대해서 공부해 본 것들을 공유하고자 이 글을 작성합니다. 많은 부분이 ms공식 문서를 참조하였고 이 글을 작성하면서 추상적으로 배웠던 COM에 대해서 더 ..

string 사용법(C++)(알고리즘) [내부링크]

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의 링크 알고리즘 풀 때 string을 써야하는 이유 입력이 한글이라면 코딩 테스트 특성상 영어만을 입력으로 주지 않을 수가 있다. 만약 char 형 배열을 사용한다면 영어 입력인 경우 문제가 없지만 한글인 경우 한글은 한 글자당 3바이트라서 원하는 출력을 유도할 수 없을 수 있다. string에서 많이 사용하는 메서드 모음 #include using namespace std; int main() { string a = "love is"; a += " pain!"; a.pop_back(); cout

read 함수 [내부링크]

read 함수원형#include ssize_t read(int fd, void *buf, size_t count);인자fd : 읽을 파일의 파일 디스크립터 buf : 읽어 드릴 데이터를 저장할 버퍼count : 읽어 들일 데이터의 최대 길이(buf)의 길이보다 길어서는 안됨)리턴값 : 실제로 읽은 데이터의 byte 수 일반적으로 count와 같은 값을 리턴 하지만 endof에 도달하거나, socket통신에서 수신할 데이터가 아직 도달하지 않았을때, socket이 close했을때0 : 더 이상 읽을 파일이 없을 경우-1 : 오류가 발생했을 경우. 상세한 에러내용은 errno에 기록된다.errno종류 EAGAIN : file을 open할 때에 O_NONBLOCK flag이 설정되었으며, 현재 읽을 데이터가 ..

파일디스크립터에 대하여(간단한 설명) [내부링크]

안녕하세요 조신입니다 오늘은 파일 디스크립터에 대해 이야기해보고 다음으로는 42서울 과제에서 get_next_line의 openmax값을 이용해 디펜스 하는 방법을 알려드리고자 합니다. 파일 디스크립터란 무엇인가 간단히 말해서 파일을 표현하는 번호입니다. 조금 더 자세히 말하자면 파일의 위치를 가리키는 곳을 가리키는 번호라고 생각하시면 되겠습니다. 파일 디스크립터 생성 open, creat, socket, accept 등의 함수로 open하면 fd라는 숫자값이 생깁니다. 이 값은 각 프로세스마다 독립적이며 프로세스마다 다른 파일 디스크립터 태이블을 가지고 있습니다. 배경 리눅스와 유닉스에서는 시스템을 전부 파일로 처리하여 관리합니다. (하드웨어 등 모든 장치도 포함합니다.) 사용 이유 시스템에서 프로세서..

기억장치와 캐시메모리 [내부링크]

기억장치 cpu 저장장치 레지스터가 있고, cpu명령이나 자료를 일시적으로 저장하는 캐시가 있다.컴퓨터가 동작할 때 처리 하는 프로그램들의 명령어나 자료를 저장하는 주기억장치가 있고, 개인의 자료와 처리 결과를 보관하는 보조기억 장치가 있다.주 기억장치(RAM, ROM)컴퓨터 내부에서 현재 cpu가 처리하고 있는 내용을 저장하고 있는 기억장치이다.비교적 용량이 크고 처리속도가 빠르다.cpu의 명령에 의해 기억된 장소에 직접 접근하여 읽고 쓸수가 있음대표적으로 RAM 과 ROM으로 나뉜다. ROM(Read Only Memory)전원이 끊어져도 기록된 데이터가 소멸되지 않는 비휘발성 메모리이다.오직 기억된 데이터를 읽기만 가능한 장치이다.데이터를 저장한 후 반영구적으로 사용할 수 있다. 그래서 시스템에 기억..

kdump란 무엇인가 [내부링크]

KDump란 무엇인가?본투비루트를 하면서 kdump라는게 있어서 알아보다가 정리한 글을 공유합니다.Kdump는 Kernel 이 crash 발생했을 때, crash dump 정보를 캡처하는 데 사용하는 kernel의 기능이다.커널 패닉 이벤트 시에 충돌 덤프를 생성하는 리눅스 커널의 한 부분이다. kdump는 kexec를 바탕으로 한 ‘커널 크래쉬 덤핑 메카니즘’이다. 이는 커널 패닉이 발생했을 때 시스템의 메모리 상태를 vmcore(메모리이미지)라는 파일 형태로 생성하는 작업이다.이는 디버깅 목적으로 분석 될 수 있고 충돌의 원인을 결정할 수 있는 메모리 이미지인 Vmcore를 생성하는것이다. Kernel이 실행 중에 crash가 발생하게 되면 'kexec'가 실행되고 예약된 메모리에서 kdump 커널을..

윈도우(window, ms)의 역사 [내부링크]

window의 역사 1. MS-DOS x86 Real mode에서 실행되는 명령줄 기반의 운영체제이다.(OS) 86 DOs 1.1을 구매해서 MS DOS1.1를 출시했다. 현재 CMD와 거의 모든 명령이 그대로 유지되고 있다. CPM쓸 때 명령어가 아직도 사용되고 있다. 2. Windows 1.0, 1985 매킨토시를 대항하기 위해서 나온 프로그램이다. IBM pc들은 무료로 사용하고 있어서 사실 가격차가 매우커서 매킨토시와 큰 괴리가 있었다. 그 때 당시 GUI는 초기 상태였다. MS-DOS 2.0 이상에서 실행되는 16bit shell프로그램이다.(os위에서 하는것) Windows 2.0 본격적으로 매킨토시와 경쟁하고 싶었음. 80286, 512 KB이상을 요구하며 MS-DOS 3.0이상에서 실행되는..