💕
후원
본문 바로가기

분류 전체보기113

[알고리즘] 모스 알고리즘 모스 알고리즘(Mo's algorithm)은 오프라인(쿼리의 순서가 상관 없는) 구간 쿼리를 처리할 때 유용한 알고리즘으로, 간단히 소개하면 길이 N인 구간을 √N개 구간으로 쪼개고, 미리 쿼리들을 정렬해서 O(n√n)의 시간복잡도로 쿼리를 처리하는 알고리즘입니다. 우선 길이 N인 구간을 각 √N개의 원소를 가진 버킷(bucket)으로 쪼갭니다. 각 쿼리들은 시작점이 더 앞쪽의 버킷에 속하고, 끝점이 더 앞쪽에 있는 쿼리부터 처리해주면 됩니다. 간단히 쿼리의 정렬 함수를 수도코드로 표기하면 이렇게 될 것입니다. bool cmp(query a, query b) { if (a.start/sqrt(n) < b.start/sqrt(n)) return true; else if (a.start/sqrt(n) == .. 2023. 5. 18.
[자료구조] 트라이(Trie) 트라이(Trie)는 문자열을 저장하고 빠르게 탐색하기 위해 사용되는 트리 형태의 자료구조입니다. 각 노드는 문자를 나타내며, 문자열의 접두사를 공통으로 가지는 경로를 형성합니다. 구현 저는 다음과 같이 구현하였습니다. #include using namespace std; typedef struct node { char c = '\0'; bool is_word; vector children; }; struct Trie { node root; node *_insert(node *rt, const char *s) { if (s[0] == '\0') { rt->is_word = true; return rt; } for (node *child : rt->children) { if (child->c == s[0]).. 2023. 5. 18.
[리뷰] 제1회 SKYCC 연합 해커톤: 페어링 후기 고려대학교, 서울대학교, 연세대학교의 컴퓨터 동아리들이 연합하여 주최한 제1회 SKYCC 해커톤. 동아리에서 모집글을 보고 개인참가(팀 랜덤배정)로 지원했습니다. 대회 1주일 전에 공개된 주제는 🤝. 연합과 화합을 상징하는 악수 이모티콘인데, 창의성을 제한하지 않는 선에서 SKYCC: Pairing의 개최 취지를 보일 수 있어 선정되었다고 합니다. 랜덤으로 구성된 팀도 발표되었는데, 저희 팀은 최초에는 기획 1, 앱 개발자 1, 웹 개발자 1, 기타 1로 구성되어있었는데 이래저래 팀원 변동이 생겨 최종적으로는 앱 개발자 1, 웹 개발자 1, 서버 개발자 1, 기타 → 기획 1, 총 4명으로 구성되었습니다. 팀명은 chatGPT한테 여러 키워드(호랑이, 화합, 개발, 프로그래밍, 해커톤 등)를 주고 만들어.. 2023. 5. 17.
[BOJ] 1629. 곱셈 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 간단하게, A의 B제곱을 구하는 문제입니다. B의 값이 매우 클 수 있으므로, DP를 이용합니다. A의 n제곱을 모두 저장하여 사용하기에는, 계산값을 저장하는 배열의 크기가 2,147,483,647이 될 수는 없으므로 다른 방법을 생각해봅니다. B를 2진수로 바꾸어서, 예를 들어 29라면 11101(2)를 생각해봅니다. A29 = A16*A8*A4*A1로 표현할 수 있고, 이는 다시 A24*A23*A22*A20으로 생각할 수 있습니다. 함수 func(num)은 .. 2023. 4. 30.
[BOJ] 1167. 트리의 지름 https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말합니다. 트리의 지름을 구하는 기본 알고리즘은 다음과 같습니다. 임의의 한 노드 A를 선택합니다. 노드 A에서 가장 먼 노드 B를 찾습니다. 노드 B에서 가장 먼 노드 C를 찾습니다. 노드 B와 노드 C 사이의 경로의 길이가 트리의 지름입니다. 더 긴 지름이 존재한다면 모순임을 보이면 증명됩니다. 코드는 다음.. 2023. 4. 1.
[웹] 혹시 당신… 웹 개발이 처음인가요? 지난 학기에 동아리에서 진행했던 스터디 자료로 사용한 문서입니다. 참고자료: https://lipcoder.tistory.com/514 [서버 가이드북] 1. 서버(Server) 란? 서버 '서버'란 도대체 어떤 것일까? 추상적으로 무엇인지는 알고 있겠지만, 우선은 사전적인 정의를 알아보는 것이 필요하겠다. 서버 [Server] 1. 테니스, 탁구, 배구 등 서브를 하는 쪽, 또는 그 사 lipcoder.tistory.com VSCode 설치와 세팅 ESLint, Prettier 알아서 설치후 세팅하세용 참고자료: https://seogeurim.tistory.com/15?category=981579 내 프로젝트에 ESLint & Prettier 도입하기 (VSCode) 본 글은 2020년에 작성된 글입.. 2023. 3. 21.
[TIL] 아이폰에서 사진 업로드가 안 돼요! 메타브, 온애드와 함께 진행한 포토 월드컵 프로젝트에서 재미있는 이슈가 있었습니다. 아이폰에서 사진 업로드가 안 된다는 거였는데요. 제가 아이폰이 없어 가상 디바이스로 테스트했을 때는 문제가 없었기 때문에 이슈를 파악하는 데에 어려움이 있었습니다. 정리된 이슈는 다음과 같았습니다. 아이폰에서 사진 업로드가 될 때도 있고 안 될 때도 있다. 사진 개수가 8개 이상일 때 업로드가 안 된다. 처음에 아이폰에서만 사진 업로드가 안 되는 이유를 파일 확장자로 생각했습니다. 아이폰에서는 고화질 사진을 HEIC 확장자로 저장한다고 알고있었기 때문에 혹시 확장자 문제일까 해서 그쪽으로 서치를 해보았는데, 그런 이슈가 따로 있는 것 같지는 않았습니다. 아이폰 사용자분들에게 직접 찍은 사진과 다운받은 사진으로 업로드를 해.. 2022. 12. 5.
[회고] 2022년 회고 눈코 뜰 새 없는 한 해였습니다. 저는 요즘 거의 1년 내내 맡아온 고려대학교 중앙 컴퓨터동아리 KUCC의 회장직을 내려놓을 준비를 하며, 정말 바쁜 하루하루를 보내고 있습니다. 조금 숨 돌릴 시간이 필요한 것 같아 조금 이를지도 모르는 회고를 적고 있습니다. 언제 업로드될지는 모르겠지만요. 올해는 이것저것 다양한 일들을 경험한 것 같습니다. 분명 연초에 단기 프리랜서로 시작했던 SCVSoft 일을 계속 하고 있습니다. 여름방학 동안에는 감사하게도 계약직으로 일하게 되기도 했습니다. 관련 없는 분야라고 생각했던 블록체인 쪽도 발가락 정도 담근 느낌입니다. KUCC에서 올해 기획했던 행사들은 어느 정도 성공적으로 해냈던 것 같습니다. 가장 큰 성과라고 하면 역시 연세대학교 중앙 컴퓨터동아리 YCC와의 교류.. 2022. 12. 4.
[백엔드 스터디] 2. 서버를 띄워보자 yarn add ts-node typescript 파일을 실행하기 위해 ts-node를 설치합니다. package.json 을 열고 script에 다음 줄을 추가합니다. "start": "ts-node src/index.ts", yarn start를 입력하면 index.ts를 실행하게 해줍니다. 서버를 띄우자 ncloud에서 서버를 만들어봅시다. 여기서 인증 키를 다운받아 둡니다. 꼭! ACG로 들어가서 ACG 설정을 누릅니다. 3000번 포트를 열거니까 허용 포트에 추가해줍니다. 이제 서버 부팅이 끝나면 공인 IP를 확인합니다. 이 공인 IP가 외부에서 우리 서버에 접근할 수 있는 IP입니다. 쉽게 말해 우리 서버 컴퓨터 집주소. 여기에 접속해서 우리 코드를 돌려야겠죠? 관리자 비밀번호 확인을 누르고,.. 2022. 9. 27.
[백엔드 스터디] 1. 익스프레스 찍어먹기 동아리에서 프로젝트장을 맡아 프론트엔드 및 백엔드 스터디를 이끌고 있습니다. 백엔드는 저도 초보이다 보니 공부하면서 스터디원들에게 전달하기 위해 만든 자료입니다. VSCode, Node 등의 설치는 이미 되어있다고 가정합니다. 공부할 것 서버, 데이터베이스에 대한 개념 알아오기 CORS란? SQL 문법 대충이라도 익혀보기 GET, POST, PUT 등 Rest API와 각 메소드에 대해 우선 Node.js Typescript 보일러플레이트를 갖다 써봅시다. git clone 으로 푹찍해옵니다. yarn add express 및 yarn add @types/express로 express와 타입 파일을 설치합니다. src/index.ts 에 다음과 같은 코드를 입력해봅니다. import express, { .. 2022. 9. 26.
[Strapi] Strapi 설치부터 배포까지 사내 위키에 작성한 글의 초안입니다! Strapi란? Strapi는 NodeJS 기반 헤드리스 CMS입니다. 헤드리스 CMS는 콘텐츠 저장소 역할을 하는 백엔드 전용 콘텐츠 관리 시스템입니다. 프론트엔드만 가져다 붙이면 컨텐츠에 접근할 수 있는 시스템이라고 생각하시면 될 듯 합니다. Strapi, Ghost 등이 있습니다. 그 중 가장 깃허브 스타 수가 많은 것이 Strapi입니다. 기본 admin 패널에서 설정하는 것 이외에 데이터를 주물주물 하는 등의 작업 또한 커스텀 코드 작성을 통해 자유롭게 할 수 있습니다. 이 글에서는 그 부분에 대해서는 다루지 않겠습니다. 프로젝트 세팅하기 npx create-strapi-app 프로젝트명 --quickstart 혹은 yarn create strapi-app .. 2022. 8. 23.
[리뷰] 2022 고려대학교 여름 해커톤에 참여했어요 2022 고려대학교 여름 해커톤! 오랜만에 해커톤에 온전히 참가자로써 참여했습니다. 개발자 60명, 디자이너 17명, 기획자 18명 총 95명 19개 팀으로 진행이 되었는데요, 총 26개 대학에서 참여했다고 하네요 👀 저희 팀만 해도 전부 학교가 달랐습니다. 사전 행사에서 팀빌딩을 진행했는데요, 칭찬과 주접에 자신이 있다고 해주신 리더님네 팀에 지원해서 간단히 이야기 나누었는데 감사하게도 함께 하자고 연락주셔서 팀 빌딩을 하게 되었어요. 팀에 지원한 것은 해커톤 주제가 아직 나오지 않은 상황이라, 이미 아이디어가 있는 팀보다는 함께 아이디어를 꾸려나가고 싶었다는 이유도 있었고, 분위기가 좋은 팀에서 협업하는 것이 항상 좋은 결과를 만들었다는 경험적 이유도 있었습니다. 리더님 발표를 듣고 팀 분위기를 정말.. 2022. 8. 22.