분류 전체보기 83

코딩모험[1] // 초등학교 - 이게 코딩... 일까?

Syphon의 코딩모험 - 목차 초등학교 2학년, 그러니까 2008년부터 로봇공학 방과후를 들었다. 로보로보 회사의 로봇 키트와 교재를 참고해 다양한 로봇들을 만들어보는 내용이었는데, 크게 로봇을 설계대로 조립하는 과정과, 로봇 제어를 위한 프로그래밍의 두 단계로 나뉘는 활동이었다. 아쉽게도 우리 학교는 프로그래밍까지 다 시킨다는 몇몇 학교와 달리 노가다성 로봇 조립만 학생에게 시켰다. 하지만 로봇 조립 과정에서도 수확은 있었다. 코딩과는 다소 무관하지만, 열심히 조립을 하며 나사는 오른쪽으로 돌리는 것이 조여지는 것이라는 아주 유용한 사실도 알게 되었다. 아, 그리고, 로봇 코딩은 로직(Rogic)이라는 블록 코딩 프로그램으로 진행되었는데, 학교에서 가르치지는 않았지만 혼자서 책 보면서 비슷하게 따라해..

코딩모험[0] // 서문 (a.k.a. 이 뻘글은 무엇인가)

Syphon의 코딩모험 - 목차 { 나와 프로그래밍의 애증관계 이야기 } /* ...는 사실 내가 코딩을 언제 어떻게 시작했고 뭘 했는지에 대한 정리글 */ 서문에 대한 짧은 서문 은 필자가 군 복무 중 작성한 동일 제목의 HTML 문서를 초고로 삼아 작성되었다. 본 블로그에 올라온 버전은, 원본에는 포함시킬 수 없었던 적절한 이미지와 자료를 가미해 더욱 완성된 기록으로 만들고자 하였다. 은 나와 코딩의 인연을 다룬 일종의 회고록이다. 내가 컴퓨터공학을 전공으로 삼을 줄이라고는 상상도 못했던 어린 시절의 경험부터, 이 글을 작성하고 있는 현 시점까지, 코딩과 함께하는 여정에는 다양하고 (내 기준) 신나는 일들이 수없이 있었다. 비록 길지 않은 정리글이지만, 이 글을 통해 그..

내가 우분투에 카카오톡을 설치한 방법 / Installing KakaoTalk on Ubuntu (22.11.29)

서론 간단한 구글 검색을 해보면 Wine과 PlayOnLinux 등을 이용해 Windows용 카카오톡을 Ubuntu에 설치해 사용하는 자세한 방법이 많이 나온다. 대부분의 방법은 특정 wine 버전을 설치하고, 특정 설정으로 몇몇 라이브러리들을 설치하는 등, 꽤나 튜닝해야 할 내용이 많다. 하지만 한글 깨짐과 창 표시 버그가 쉽게 발생했고, 설치해야 하는 dependency 등이 복잡하고 귀찮아 그간 VirtualBox 위에 Windows 10 인스턴스를 돌리는 방식으로 카카오톡을 사용했었다. 그러던 어느 날.. 그냥 혹시나 하는 마음에 저런 가이드를 하나도 보지 않고 Wine을 통한 카카오톡 설치를 아주 간단하게 시도해봤다.. ...그런데 그냥 되더라..? 기록 차원에서, 그리고 혹시나 다른 누구에게 ..

대회후기: SCPC 2022 Round 1

군대 사지방에서 짬내서 열심히 긁은 예선. 중간에 점호받으러 가고... 폰으로 보고.. 외출도 나가면서 디버깅 할 시간이 많이 부족했다. 특히나 익숙하지 않은 C++을 써야해서 디버깅이 너무나도 오래 걸렸다. 라운드 2가 걱정된다. 현재 더 이상 문제들을 열람할 수가 없어서 기억에 의거해 상당히 대충 작성하는 후기가 될 예정이다. 1. 개미 개미들을 stable sort하면 된다. 2. K 등분 맞웨틀. 총합을 k등분 한 값을 기준으로, k의 정수배인 지점들은 potential split point들이다. DP 느낌으로, 이러한 potential point마다, 그 위치보다 앞서 온 split point까지의 경우의 수를 다 더해주면 된다. 사실 코드 다시 열어보기도 싫어서 설명도 대충 했다. 끝까지 점..

대회후기: Codeforces Round #810 (Div. 2)

휴가 중 두번째 대회. A: Perfect Permutation Shift one. AC: 2 분 B: Party 경우를 나누어 생각하면 어렵지 않다. 일단 모든 사람을 최대한 포함시키는 것에서 시작한다. Pair의 개수가 홀수라면, 그래프에서 몇몇 정점을 제거해야한다. 제거해야 하는 정점의 집합 속에 홀수명의 친구를 가진 정점이 있다면, 그 정점만 제거해도 됨을 알 수 있다. 제거해야 하는 정점의 집합 속에 홀수명의 친구를 가진 정점이 없다면, 그 중 두 정점이 서로 친구여야만 함을 알 수 있고, 서로 친구인 두 정점만 제거해도 됨을 알 수 있다. 따라서 홀수 친구를 가진 모든 정점을 먼저 살피고, 서로 친구인 짝수 친구를 가진 정점들을 다 살피면 된다. 모두 살펴도 시간은 충분하다. AC: 20 분 ..

대회후기: Educational Codeforces Round 132 (Rated for Div. 2)

찍턴 휴가를 나와서 오랜만에 친 대회. 정말 오랜만에 핸디캡 없는 대회이다. (작년 말의 대회는 부상으로 인해 왼손 하나로 쳤었고, 올해 초의 대회는 군대에서 격리중에 휴대폰으로만 쳤었다. 휴대폰 대회는 후기를 남기지 못하였다.) A: Three Doors Trivial. AC: 4 분 B: Also Try Minecraft 양방향으로 낙폭 누적합을 전처리해두면 된다. AC: 12 분 C: Recover an RBS 복잡하게 생각을 하다가 꼬였다. Unique한지 아닌지만 판별하면 되므로, greedy한 접근이 가능하다. ?에 치환할 필요한 (와 )의 개수를 계산한 후, 모든 (를 왼쪽으로 몰고 )를 오른쪽으로 몰아 넣는 생각을 해보자. Invalid한 braces가 발생하는 것은 아직 열지 않은 괄호를..

대회후기: Codeforces Round #750 (Div. 2)

손이 다쳐서 갑자기 사회...가 아니라 병원으로 튕겨나왔다. 한손으로 레이팅 방어가 될지 의문이었지만, 뭐든 해봐야 아는 법! 코포는 못참거든 ㅋㅋㅋㅋㅋㅋ A: Luntik and Concerts $a, b, c$ 각각의 홀짝성을 기준으로 8 경우로 나눠 풀었다. 알고보니 총합의 홀짝성만 따져도 됐다. AC: 10 분 B: Luntik and Subsequences Trivial. AC: 13 분 C: Grandma Capa Knits a Scarf 모든 알파벳 $k$마다 시도해보면 된다. 특정 알파벳으로 palindrome이 가능하다면, 그 알파벳을 전부 다 걷어내도 가능하다. 이 사실로 가능성 판정을 한다. $k$ 제외 다른 알파벳들로 문자열을 쪼갰을 때, 각 구역의 $k$ 개수를 대칭적으로 만들어주..

Soldier-Link: 육군훈련소 인편 전달 웹사이트 구축하기

소개 육군훈련소에 먼저 다녀온 선배님의 블로그 글 덕분에, 인터넷 편지를 보낼 수 있는 더캠프 비공식 API가 있음을 알게 되었다. 일반적인 방법으로 더캠프를 통해 육군훈련소에 있는 훈련병에게 편지를 보내는 방법은 아래와 같다: 더캠프 앱을 설치하거나 웹을 통해 접속하여 회원가입을 한다. 훈련병의 생년월일/입영일 등을 입력하고 '관심군인'으로 추가한다. 입영 1주일 후 정도에 개설되는 '카페'에 가입한다. 카페에서 '위문편지 보내기'를 통해 인터넷 편지를 작성한다. 대충 봐도 복잡하다. 그래서 나도 선배가 했던 것처럼 나한테 인터넷 편지를 직빵으로 보내주는 웹사이트를 만들어 보기로 했다! 원리는 크게 어렵지 않다. 더캠프 비공식 API는, 웹/앱에서 위문편지를 작성해 전송할 때와 같은 request를 보..

개발/기타 2021.03.28

코딩일지: Codeforces-Supercharger (예제 테스트 자동화 도구)

코드포스를 시작한 2019년부터 항상 언젠가 만들어야지... 하면서 미뤄오던 것이 있었다. 바로 코드포스 대회의 예제 입출력 테스트를 자동화해주는 도구이다. 대회 도중, 코드 로직을 수정할 때마다 코드포스 사이트의 입력을 복붙하는 과정이 꽤나 번거로웠고, 웹 크롤링을 통해 이 과정을 자동화해줄 수 있는 도구가 있다면 편리하겠다는 생각을 여러 번 했었다. 더불어 이 블로그에 대회 후기들을 꾸준히 남기면서, 후기 템플릿을 자동 생성해줄 스크립트 또한 있으면 좋겠다는 생각을 하게 되었다. 후기에는 각 대회 문항의 이름과 링크가 들어가야 하는데, 이를 일일이 복붙해서 링크 걸어주기가 꽤 귀찮기 때문이다. 얼마 전, 대회 후기를 작성하려던 내가 갑자기 위의 필요한 기능들을 구현해버렸다: https://github..