잡글 가득 블로그
article thumbnail
이것저것 출제 후기
PS 기록들 2024. 2. 22. 16:50

코드마스터 2023 이후로 세 문제를 출제하였다. 때는 작년 여름 방학. 정시로 늦은 탑승을 하는 것은 승산이 적다고 판단했던 시기. 특기자에 한 줄이라도 더 적을 거 만들자는 생각으로 (사실 함수컵 검수하다가 뽐뿌가 와서.. 그냥 출제가 하고 싶었다) 문제 구상을 시작했다. Sieve Game, 고양이 리그, 신촌방위본부: 지하 벙커의 비밀, 요 세 문제가 그 때 만들어졌다. 당시에 한 일주일간 한적한 카페에 가서 이것저것 생각나는대로 만들어보다가 집에 오는 걸 반복했다. 신촌방위본부: 지하 벙커의 비밀은 SNUPC Call for Tasks에 던졌다가 반려되었고, 이번 SUAPC 2024w Call for Tasks에서 간택되었다. 선발고사 & 함수컵에 출제된 투스텝을 보고 투스텝에 대한 관심이 많이..

article thumbnail
알고리즘 {먼데이} 챌린지 3주차
PS 기록들 2022. 11. 2. 21:22

사실 지난 주에 4주차가 있었다. 지난 주는 워낙 바빴고, 주말에 갑자기 감기가 걸리는 바람에 4주차를 까먹고 안 풀었다... ㅠㅠ 5주차는 방금 풀고 왔는데, 어렵기보단 시간을 좀 잡아먹는다. 코딩 테스트처럼. 자세한 이야기는 5주차 블로그를 적게 되면 그때 하도록 하고... 아무튼 3주차 풀이! 1. 0커플 그냥 이진 탐색으로 풀었는데, 문제의 조건을 생각하면 단순 합을 통해서 구할 수도 있다. 하지만, 어떤 조건이 와도 범용적으로 사용할 수 있는 이진 탐색도 꼭 알아두면 좋겠다. 2. 폴더 폰 자판 각 버튼마다 갖는 목록을 std::string으로 잡아주면 구현이 편리하다. 각 string의 길이로 나눈 나머지를 이용하면 여러번 눌러 원래대로 돌아오는 성질도 포괄할 수 있다. 이처럼 순환되는 목록..

코드 최적화
기타 2022. 5. 26. 19:14

알고리즘 트레이닝 초록책 2판을 오늘 받아보았다. 새롭게 추가된 내용이 곳곳에 있을 것이기 때문에 앞에서부터 살펴보았다. 역시나 따로 언급되지 않은 '3.3 코드 최적화'라는 목차가 생겼다. 코드 최적화는 고인물들이 아니더라도 통용되고 잘 알려진 기법이다. 하지만, 그 최적화를 깊이있게 이해하는 사람은 드물고, 그냥 입에서 입으로 전해지는 정도인 것 같다. 따라서 최적화의 중요한 부분들을 보충해주는 것이 마음에 들었다. 덕분에 갖고 있던 의문점들도 많이 해결되었다. 컴파일러 출력 컴파일러 최적화 /2, %2 등을 비트연산으로 대체하는 코드들을 보면서 안 예쁘다고 느껴왔었다. 그래서 세그트리 기본문제에다가 비트 연산을 사용한 경우와 그렇지 않은 경우를 비교해 본 바 있다. 하지만 유의미한 속도 차이가 없어..

article thumbnail
실수 없는 계산기하(1) ★
알고리즘 설명/기타 2022. 2. 17. 05:26

계산기하의 기본 도구들을 소개합니다. 마음가짐 기하 문제는 예외 처리가 적고, 구현이 쉬운 형태의 표현 방법 및 풀이를 이용해야 한다. 그리고 실수 좌표보다는 정수 좌표를 이용해야 한다. 그래서 이 글은 실수를 적극적으로 이용하는 문제는 논외로 한다. 그래서 이중적 의미로 "실수 없는 계산기하"이다. 템플릿 기하를 여행하는 Competitive Programmer를 위한 안내서에서 소개된 편리한 표현 방법을 따른다. 위 글에서 참고한 예외 사항이다: 점이 [1, 2개 / 일직선상 / 위에 존재] 직선, 선분이 [평행 / 일직선상] 중복 존재 점과 벡터 complex을 사용한다. Unspecified Behavior임을 감안하여 몇몇 함수들을 재정의한다. Unspecified Behavior임에도 사용하는..

article thumbnail
두 포인터 구현 바로잡기 ★
알고리즘 설명/기타 2022. 2. 1. 23:39

책 "알고리즘 산책"에서 다음과 같은 내용을 보았다. ...하지만 재귀 호출을 완전히 없애서 함수 호출에 따르는 오버헤드를 피해 보자. 정의 2.1 모든 형식 매개변수를 각각에 상응하는 인자로 사용하는 꼬리 재귀 호출을 순 꼬리 재귀 호출(strictly tail-recursive)이라고 한다. 재귀 호출을 하기 전에 변수의 값을 미리 설정해 주면 순 꼬리 재귀 호출로 고칠 수 있다. int mult_acc3(int r, int n, int a) { if (odd(n)) { r = r+a; if (n == 1) return r; } n = half(n); a = a+a; return mult_acc3(r,n,a); }​ 이제 꼬리 재귀 호출을 while(true) 구문으로 바꾸기만 하면 손쉽게 반복문 형..

article thumbnail
정보올림피아드 공식 교재
PS 기록들 2021. 2. 9. 12:23

+수정) 알고리즘 문제 해결에 대한 관심이 높아져 매년 난이도는 높아지고 있는 추세입니다. 따라서 현재로는 이 교재로는 초등부 상위권/중등부 중위권 이상을 노리는 분들에게 부족합니다. 입문자들에게 추천하는 교재이고, 이보다 깊이 공부하려면 외국 서적(번역본도 많음)을 참고 하시거나 여러 블로그들을 통해 공부하시는 것을 추천드립니다. 이 교재는 원래 정보올림피아드 사이트에 있었지만 주최 측이 바뀌고 덩달아 사이트도 바뀌는 바람에 좋은 교재인데, 다운로드할 수 없게 됐습니다... 집필진도 좋은 분들이시고, 내용도 훌륭합니다. 그래서 이 교재들을 공유하기로 했어요. 순전히 교육적 목적이고, 원래 사이트에서도 자유롭게 이용 가능하도록 배포했으므로 문제가 없으리라 생각해요...

profile on loading

Loading...