본문 바로가기

전체 글20

[KOI 기출] XCorr (2018 전국 고2) 처음 이 문제를 봤을 때는 굉장히 식도 많고 복잡한 대수학이나 자료구조를 써야 할 것만 같아서 겁을 많이 먹었었는데, 생각해보니 이론적으로 어려운 부분은 없다. (간단한 수학+이진탐색) 구현이 좀 짜증날 수는 있는데, 침착하게 식을 세워보면 된다. 문제 보기 백준 15976번 접근 방법 1. 노가다 일단 정의에 충실하게 \( XCorr(t) \)를 구하는 함수를 만들어 모든 \(t\)에 대해 일일이 구한 값을 더한다면, XCorr 한 번 구하는 데 시간이 \(O(n)\)이므로 총 \( O((b-a)n) \)이라는 시간복잡도가 나온다. 정의에 충실하게 짠 \(XCorr\) 함수는 대충대충 써보면 다음과 같다. (테스트는 안 해봤는데 맞겠지...?) int xcorr(int t) { int sum = 0; .. 2020. 3. 1.
PyOpenGL로 3차원 색상구(球) 만들기 1편 - HSV와 HSL 얼마전 갑자기 아이디어가 떠올라서 만들어본 프로젝트. 3차원이기 떄문에 색상환은 아니고 색상구(球)라 하는 게 맞을 듯하다. 결과물은 대충 이렇게 생겼다. 일반적인 컴퓨터 모니터는 빨강, 초록, 파랑 LED를 사용하기 때문에, 컴퓨터에서 색을 저장할 때 보통 빨강, 초록, 파랑 LED의 밝기, 즉 RGB로 색을 나타내곤 한다. 각막의 원뿔세포가 빨강, 초록, 파랑에 해당하는 파장의 빛에 반응해 뇌로 신호를 보내면 뇌가 어떤 색깔인지를 인식한다. 그런데 대부분의 사람들은 색깔을 단순한 RGB 정보로 인식하는 데 익숙하지 않다. '빨간 빛 50%, 초록 빛 30%, 파란 빛 10%가 섞인 색'이라 말하면 그래픽이나 웹 디자인 쪽에 일하는 사람이 아닌 이상 어떤 색인지 감을 잡기 힘들다. 참고로 그 색은 이렇.. 2020. 2. 29.
음수 진법이 가능할까? 10진법으로 1234라고 적으면 $$1234=1\times10^3 + 2\times10^2 + 3\times10^1 + 4\times10^0$$ 을 의미한다. 마찬가지로 8진법으로 1234라고 적으면 $$1234_{(8)}=1\times8^3 + 2\times8^2 + 3\times8^1 + 4\times8^0$$ 을 의미하게 된다. 참고로 계산해보면 10진법으로 668이 나온다. 10진법은 자릿수로서 0~9의 숫자를 사용하고, 8진법은 0~7까지의 숫자를 사용한다. 또 10진법에서 한 자리가 올라갈 때마다 자리의 크기(계수)가 10배씩 증가하고, (1의 자리, 10의 자리, 100의 자리, ...) 8진법은 8배씩 증가한다. (1의 자리, 8의 자리, 64의 자리, ...) 즉 n진법은 0부터 n-1까.. 2019. 9. 1.
[KOI 기출] 두 박스 (2018 전국 중1) 이 문제는 알고리즘 문제는 아니지만, 그냥 풀면 복잡한 문제를 얼마나 쉽게 단순화할 수 있는지를 잘 보여주는 문제다. 문제 보기 정올 3232번, 백준 15973번 접근 방법 1. 노가다 노가다로 찾아도 Line은 "비교적" 쉽게 찾을 수 있다. 아마 조건문을 한 15개쯤 쓰면 Line과 Point는 판별할 수 있다. Line을 찾으려면 공유하는 x 또는 y좌표가 있는지 찾은 후에, 내접하는지, 외접하는지, 아니면 만나지 않는지만 따져주면 된다. x 좌표 하나만을 공유하는 경우는 다음과 같은 것들이 있다. (물론 왼쪽 변의 위치 관계도 고려하고, 저것들은 선대칭한 케이스들도 고려해야 하지만, 대표적으로는 저렇게 나타낼 수 있다.) 이중 마지막 2개가 Line이다. Point는 비슷하게 x좌표 하나와 y좌.. 2019. 7. 19.
[C++ 강좌연구] 동적 바인딩 다음 강의 일주일 내로 올라갑니다. 오래 기다리게 해서 죄송합니다. 다음 코드는 어떤 게임의 일부이다. 무기의 종류에는 칼(Sword)과 마법(Magic)이 있고, Sword와 Magic이라는 두 클래스가 Weapon 클래스에서 상속을 받아 구현한 상태다. main 안의 currentWeapon은 플레이어가 현재 들고 있는 무기를 가리키고 있다. #include using namespace std; class Weapon { public: Weapon(int power) : power(power) { cout 2019. 6. 18.