일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ip
- 타입스크립트
- type challenge
- 수학
- HTTP
- BFS
- 크롤링
- Algorithm
- HTTP 완벽 가이드
- 가천대
- javascript
- 알고리즘
- 프로그래머스
- dp
- Crawling
- 자바스크립트
- socket
- typescript
- 프로그래머스 레벨 2
- 타입 챌린지
- 백준
- dfs
- 문자열
- 그래프
- 레벨 1
- 소켓
- Nestjs
- 쉬운 문제
- TCP
- Node.js
- Today
- Total
목록전체 글 (499)
kakasoo
윈속(윈도우 소켓)을 기반으로 하는 프로그램을 개발하기 위해서는 다음 2가지를 선행해야 한다. 1. header file로 winsock2.h 를 포함시킨다. 2. ws2_32.lib 라이브러리를 링크시켜야 한다. 해당 내용은 설정에서, 추가 종속성의 우편에 적어주면 된다. (ws2_32.lib) 이를 통해 헤더 파일로 추가하면 윈속과 관련된 함수들을 마음대로 호출할 수 있게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include using namespace std; void ErrorHandling(const char* message) { fputs(message, stderr); // buffer 문제를 없애기 위해서 stderr를 전달 => 기본..
네트워크 프로그래밍은 운영체제와 시스템 프로그래밍에 대한 약간의 지식이 필요하다. 또한 네트워크 상의 전송규약인 TCP/IP 라는 프로토콜을 어느 정도 이해해야 한다. 네트워크와 소켓에 대한 이해 네트워트 프로그래밍은 서로 다른 두 컴퓨터가 정보를 교환할 수 있도록 하는 것을 의미한다. 이 과정에서는 물리적인 연결이 필요하고, 이 안에서 작동할 소프트웨어가 필요한데, 이 연결은 이미 다 되어 있다. 지금 존재하는 대부분의 컴퓨터들은 이미 인터넷이라고 하는 '물리적인 연결'이 되어 있는 상태기 때문에, 우리가 고민해야 할 부분은 이제 이 망에서 작동할 소프트웨어적 데이터의 송수신 방법이다. 하지만 이 방법 역시 운영체제에 상에서 소켓'Socket' 이라는 것을 제공하기 때문에 이미 해결되어 있는 상태다. ..
var sum; // sum 이라는 이름의 변수 선언 var a,b; // a,b 라는 이름의 변수 선언 console.log(x); // x 변수가 선언되지 않은 경우 undefined 출력 y = 2; // 변수를 선언하지 않은 상태로 값 입력시 전역 변수로 취급 console.log(y); // 2 변수 끌어올림 (호이스팅) x가 미리 선언되지 않은 상태로 x를 출력하는 코드는, undefined를 출력한다. 하지만 선언 없이 값 대입을 먼저 할 경우에는 오류 없이 정상적인 출력이 된다. 이는 y를 출력한 것에서 확인가능하며, 자동적으로 변수가 전역 취급되었음을 의미한다. 이것만으로도 JavaScript는 다른 언어와 다른 특징을 가지고 있음을 확인할 수 있다. JavaScript가 변수 선언에 대..
1. 인터프리터 언어 JavaScript는 기본적으로 인터프리터 언어이다. 인터프리터는 브라우저에서 F12 개발자 모드 ( 크롬의 경우 ) 를 눌러 한 줄씩 코딩 가능한 것을 말한다. 인터프리터 언어는 조금 느린 대신에, 개발자에게 조금 더 친화적인 것이 특징이다. 모든 라인이 컴파일이 이루어진 후에 전체적인 코드를 디버깅할 수 있는 컴파일 언어와 달리, 인터프리터 언어는 한 줄 씩 그 내용을 확인해가면서 코드를 짤 수 있다. 2. 객체지향과 함수형 C++과 Java는 클래스를 이용하여 객체를 생성하는 클래스 기반의 객체지향 언어이다. 반면 JavaScript는 프로토타입 (Prototype) 을 상속하는 프로토타입 기반 객체지향 언어이다. JavaScript에서는 객체를 생성한 후에도 프로퍼티와 메서드..
git clone git status git add * git add filename.확장자명 git commit -m "Add filename.확장자명" git remote add origin git remote -v git push -u origin master git push 2020.08.01 추가 git을 배우고 싶다면, 이 내용을 완벽히 이해해야 할 것이다, 이해하고 난다면, 명령어를 이해하는 게 더 쉬워질 것이다. 어떠한 원격 저장소가 있다, 이 원격 저장소도 일종의 컴퓨터로, 중국에 있는 컴퓨터라고 해보자. 그런데 나는 한국 사람이고 한국에 살다보니 이 컴퓨터에 있는 file을 가지고 작업을 하는 게 불가능하다, 그래서 이 원격 저장소에 접근하기 위해서 우리는 fork를 한다. fork는 ..
여기에 작성된 코드는 절대로 좋은 코드가 아니니, 참고하지 말 것! 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 #include #include using namespace std; /* 1232123 이라는 숫자가 있다고 할 때, 기준점을 하나씩 옮겨가며, 양측의 숫자들이 동일..
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #include #include #include using namespace std; char arr[15]; bool visited[15]; int l, c; int moum; int jaum; vector str; void dfs(int cur, int start) { if (cur == l && moum >= 1 && jaum >= 2) { for (int i = 0; i
알고리즘에 대해 알고리즘을 배우기 전에 대부분의 사람들이 궁금한 것이, 수학적인 능력의 유무가 알고리즘을 배우는 데에 필수적인지 일 것이다. 나도 어렴풋이 그런 걸 느끼기도 했고, 경험해가며 굳이 필요없다는 것을 느꼈다. 인공지능을 한다거나, 아니면 그래픽스를 할 게 아니라면 필요없다는 것을 이해할 수 있었다. 비록 내가 인공지능이나 그래픽스를 해본 것은 아니지만, 수식을 쓰는가 안 쓰는가, 그런 도구적인 쓰임과 자신이 사용하는 공식들에 대한 이해 없이 그저 수학적 사고력만으로 풀 수 있는 문제들 선이 내게 필요한 cut line 이었기 때문이다. 그 이상으로 가려면 아직 시간도 많고, 필요할 때 배워도 문제 없겠다고 싶었다. (Q. 나는 하루에 8시간 정도 code를 짜고 있는데, 필요할 때 배워도 문..
문제가, 솔직히 알고리즘이라고 하기도 애매한 것들 (정의로는 물론 다 알고리즘이겠지만), 그런 것들은 그냥 다 분류를 '수학'이라고 해버리는 감이... 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 32 33 34 35 #include using namespace std; int arr[100000]; int main(void) { int n; cin >> n; for (int i = 0; i > temp; if (temp == 0) { i--; arr[i] = 0; i--; n--; n--; } else { arr[i] = temp; } } int sum = 0; for (int i = 0; i
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 #include #include using namespace std; int a[100]; int b[100]; int main(void) { int n; cin >> n; for (int i = 0; i > a[i]; } for (int i = 0; i > b[i]; } sort(a, a + n); sort(b, b + n); int sum = 0; for (int i = 0; i
문제 이름은 쉬운 계단 수인데, 사실 쉽지 않다, 저기 정답 비율만 봐도 28.216%지 않은가. 물론 DP에 능숙해졌다면 몇 번의 시행 착오만 겪어도 풀 수 있는 문제긴 하겠지만. 자세한 설명은 코드를 먼저 보여준 다음에 이어 나가는 게 좋을 거 같다, 주석을 달아 놨으니. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 #include using namespace std; long long int dp[101][10..
문제 자체는 어렵지 않다, 떠올리는 발상이 좀 오래 걸릴 수 있긴 하지만, 생각을 해냈다면 그 이후는 크게 어려울 것도 없다. 나 같은 경우에는, 하나의 index를 기준으로 좌측과 우측으로 각각 내림차순으로 최장 길이 수열을 구하고, 그 둘의 합을 하나의 dp에 저장할 것이다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #include using namespace std; int list[1000]; int dp[1000][3]; int n; int main(void) { cin >> n; for..