그럴듯한 개발 블로그
kqueue와 달리 epoll은 왜 fd에 대한 event 추적이 불가능한가
<고민했던거> 2023. 11. 29. 03:16

c++로 nginx와 비슷하게 동작하는 웹서브를 만들면서 의문이 생겼다. 난 kqueue를 사용해 fd에 대한 read write를 kevent에 등록해서 socket, 정적 파일에 대한 I/O작업 buffer_size로 잘라 전부 event로 관리했다. (subject 규칙에 file에 대한 I/O는 멀티플렉싱 event를 통해서만 가능하다고 쓰여 있다) 파일을 read 할 때도 socket read 할 때와 동일한 buffersize만큼 읽어 와서 제일 오래 걸리는 I/O작업을 분할하는 데 의의가 있다고 생각했다. buffersize가 100일 때 파일의 크기가 10000이고 그 파일을 읽는 작업을 이벤트 하나에서 처리해 버리면(ex. 반복문 안에서 eof까지 무한 read) 100번으로 잘게 쪼개지..

백준 1025 제곱수 찾기 c++
<algorithm>/백준 2023. 11. 28. 22:49

https://www.acmicpc.net/problem/1025 1025번: 제곱수 찾기 첫째 줄에 N, M이 주어진다. 둘째 줄부터 N개의 줄에는 표에 적힌 숫자가 1번 행부터 N번 행까지 순서대로 한 줄에 한 행씩 주어진다. 한 행에 적힌 숫자는 1번 열부터 M번 열까지 순서대로 주어지 www.acmicpc.net 아이디어는 금방 생각 났고, 구현도 금방 했는데 디버깅이 겁나 오래걸렸다. 일단 문제를 잘못 본게 크다. x, y 증가량 즉 기울기가 무조건 양수인 줄 알았는데 아니였고 1 4 1234 이 경우에 xdist 0 ydist 1 일때 12 123 1234 다 조합에 들어가야 한다. 또 xdist, ydist가 전부 0 이라 무한루프 빠지는 것만 조심하면 된다. 지금 보니 굳이 int로 바꿔 ..

백준 1013 Contact c++
<algorithm>/백준 2023. 11. 28. 01:23

https://www.acmicpc.net/problem/1013 1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net 문제 이해하다가 탈모 올 뻔했다. 먼저 0이 연속으로 붙어서 올 경우는 첫 번째 100+1+ 뿐이다. 따라서 1. 0 연속인 부분 ex) 1100011 => 1 XXXXXX로 지워준다. 만약 1001처럼 마지막에 1이 한 개이면 x로 바꿔준다. 10010001 이런 경우에 에러 처리 해야 하기 때문 2. 나머지 남은 부분 01 지워준다. 3. 전체 string 순회하면서 1이나 0 남아..

백준 12891 DNA 비밀번호 c++
<algorithm>/백준 2023. 11. 28. 01:15

https://www.acmicpc.net/problem/12891 12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net acgt배열을 unordered_map으로 만들어 두었으면 더 가독성 좋았을듯. 당시엔 생각이 안났다 // DNA 비밀번호 #include #include #include #include #include using namespace std; vector acgt(4, 0), cur_acgt(4, 0); void addChar(char obj) { switch (obj) { ..

백준 19583 싸이버개강총회 c++
<algorithm>/백준 2023. 11. 28. 01:14

https://www.acmicpc.net/problem/19583 19583번: 싸이버개강총회 첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는 www.acmicpc.net 굳이 int로 바꿀 필요 없었다. #include #include #include #include #include using namespace std; int timeToInt(string& input) { int res = 0; res += (input[0] - '0') * 600; res += (input[1] - '0') * 60; res += (inpu..

백준 9009 피보나치 c++
<algorithm>/백준 2023. 11. 22. 02:12

https://www.acmicpc.net/problem/9009 9009번: 피보나치 입력 데이터는 표준입력을 사용한다. 입력은 T 개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T 가 주어진다. 각 테스트 데이터에는 하나의 정수 n www.acmicpc.net 문제를 보자마자 든 생각 1. 아 피보나치 배열 만들어야겠다 2. 아 input 중 제일 큰 것 까지 만들어야겠다. 3. 아 현재 target보다 작고 제일 큰 피보나치부터 빼면 되겠다. #include #include #include using namespace std; vector fibo, input; void f(int target) { vector res; int idx = fibo.size..