본문 바로가기

전체보기

(168)
백준 1786번 찾기 KMP 알고리즘을 이용해서 풀 수 있는 문제다. https://www.acmicpc.net/problem/1786 1786번: 찾기 첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m번 문자가 차례로 � www.acmicpc.net #include #include #include using namespace std; string s, t; int cnt; vector position, pi; void getPi(); void KMP(); int main(void) { char c; while ((c = getchar()) != '\n') { s += c; } while..
Express + RabbitMQ 하려했다 왜 이랬는지 알 수 없다... Message Queue를 한번쯤 써보려고 했으나 공부할수록 뭔가 헛짓같았다. 지금 내 코드는 express.Router()를 이용해서 작성되어있는데 Message Queue(RabbitMQ)를 사용하려면 이걸 다 뜯어 고쳐야한다. 그렇다고 더 좋은 점이 있나 하면 그것도 아니다 로그 관리는 pm2로 할 것이라... p.s) RabbitMQ는 공신 문서가 굉장히 잘 되어있다. 나중에 또 정리하겠지만, 공식 문서를 따라하는 것만큼 좋은 것도 없을 것 같다.
백준(BOJ) 1765번 피자 굽기 자바(java) https://www.acmicpc.net/problem/1756 1756번: 피자 굽기 문제 월드피자 원주 지점에서 N개의 피자 반죽을 오븐에 넣고 구우려고 한다. 그런데, 월드피자에서 만드는 피자 반죽은 지름이 제각각이다. 그런가하면, 월드피자에서 사용하는 오븐의 모양도 www.acmicpc.net https://github.com/asomeJay/algorithm/blob/master/Acm_icpc/Java/src/boj1756.java asomeJay/algorithm Algorithm Repository. Contribute to asomeJay/algorithm development by creating an account on GitHub. github.com 이분 탐색으로 풀 수도 있지만..
Ctrl C하고 Ctrl V하면 어떤 일이 벌어질까? https://superuser.com/questions/1436622/how-do-ctrlc-and-ctrlv-work How do Ctrl+C and Ctrl+V work? I was always wondering what happens under the hood (in the operating system) when I copy an image (selecting it and using Ctrl+C) into a Word file (pasting it with Ctrl+V), for example. superuser.com Windows는 이렇다. 윈도우에선 Cliboard API와 Storage Buffer가 커널에서 제공된다. Ctrl C를 누르는 순간 윈도우즈 Win32 API function..
백준(BOJ) 1033번 칵테일 https://www.acmicpc.net/problem/1033 문제가 진짜 이상하다... 문제만 해석하면 아주 쉽게 풀 수 있다. 문제 조건은 다음과 같다. N개의 재료가 있고, N-1개의 레시피가 있다. 이들을 조합해서 N개 재료의 질량비를 알 수 있다. 그 말인 즉슨 이 재료들을 연결하면 TREE이다. 레시피는 재료 둘을 연결한다. 각 재료를 NODE로 각 레시피를 EDGE라고 볼 수 있다. Cycle이 없는 Graph이기 때문에 Tree이다. 해결은 간단하다. Tree의 점 하나를 찍고 그 점에 임시로 전체 레시피의 최소 공배수를 넣는다. 그 점부터 시작해서 재료 간의 질량비를 이용해서 전체 질량 비를 구한다. /* 1033 칵테일 */ #include #include #include #incl..
백준(BOJ) 11585 속타는 저녁 메뉴 내 속도 탄다. 이런 젠장 https://www.acmicpc.net/problem/11585 KMP 알고리즘을 사용하면 된다. 룰렛을 돌릴 문자열을 한번 더 더하면, 즉 원래 문자열이 S라면 S + S라고 하면 룰렛을 돌린 효과를 얻을 수 있다. S + S에 대해 KMP 알고리즘을 적용하면 문제가 쉽게 풀린다. 단, S + S의 마지막을 POP 해줘야 한다. 안그러면 (예를 들어) ABC 라는 문자열이 들어왔을 때 ABCABC가 되어서 상근이가 고기를 먹을려면 나와야하는 ABC를 두 번이나 세게 된다. 그러니까 처음 상태에서 룰렛을 계속 돌리면 다시 처음 상태로 돌아올 텐데, 이 돌아온 상태까지 센다는 말이다. /* 속타는 저녁 메뉴 */ #include #include #include #include..
BOJ(백준) 2252 줄 세우기 https://www.acmicpc.net/problem/2252 parent 배열을 통해서 어떤 애가 트리의 꼭대기인지 파악한다. 즉, 두 번째 for문에서 parent[i] == false를 체크하는데 이 조건문을 통과하는 녀석은 제일 뒤에 있는 학생이다. 세 번째 for문은 어떤 트리에도 속하지 않으니까 위치 조건이 없는 학생을 출력한다. print(int point) 함수는 매개변수로 들어온 point가 제일 뒤에 있는 학생이므로 이 학생의 앞에 오도록 지정된 학생을 방문하면서 출력한다. 몇 번 그려서 하면 바로 파악될듯 /* 줄 세우기 */ #include #include #define MAX_STUDENT 32000 + 1 #define MAX_COMP 100000 + 1 using names..
백준(boj) 1030번 프랙탈 평면 https://www.acmicpc.net/problem/1030 문제를 어떻게 풀 지 구상하는데 시간을 많이 투자했다. 처음부터 배열을 크게 잡는 건 메모리가 터지기 때문에 시도하지 않았고 recursive하게 함수를 돌리면서 각 칸의 색깔을 판정했다. 말로하는 것보다 코드를 보는게 이해가 빠를 듯하다. /* 프렉탈 평면 */ #include #include #define WHITE 0 #define BLACK 1 using namespace std; int Time, N, K, R1, R2, C1, C2, Biggest; int getColor(int r, int c); bool is_middle(int r, int c, int); int main(void) { ios_base::sync_with_s..