본문 바로가기

분류 전체보기12

백준 9095 : 1, 2, 3 더하기 - C++ 1, 2, 3 갯수를 일일히 구하는 것은 비효율적인 접근이겠습니다. 1부터 n을 하나씩 늘려가면서 n을 1, 2, 3의 합으로 나타낼 수 있는 경우들을 직접 적어보고 적절한 점화식을 찾아봅시다. 더보기 n이... 1 인 경우 - 1 2 인 경우 - 1, 1 / 2 3 인 경우 - 1, 1, 1 / 1, 2 / 2, 1 / 3 4 인 경우 - 1, 3 / 1, 1, 2 / 2, 2 / 1, 1, 1, 1 / 1, 2, 1 / 2, 1, 1 / 3, 1 위 경우들을 살펴보면, n이 1인 방법의 뒤에 3을 붙이고, 2인 방법들의 뒤에 2를 붙이고, 3인 방법들의 뒤에 1을 붙이면 n이 4인 방법들을 완성할 수 있다는 규칙이 보입니다. 즉, A(n)이 n을 1, 2, 3의 합으로 나타낼 수 있는 경우의 수라고 .. 2023. 2. 4.
백준 15829 : Hashing - C++ 나머지 연산(mod)은 분배가 가능하다는 점을 다시 되새기고 갑시다. $$ (A+B) \bmod M=(A\bmod M+B \bmod M) \bmod M $$ $$ (A*B) \bmod M=(A\bmod M*B \bmod M) \bmod M $$ $$ (A-B) \bmod M=(A\bmod M-B \bmod M + M) \bmod M $$ A - B의 나머지를 연산하는 과정에서 자칫 음수가 나올 수 있으므로 M을 더해주었습니다. 더보기 #include #include using namespace std; int main() { cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); int l, temp; long long res = 0; long.. 2023. 2. 2.
백준 26007번 : Codepowers - C++ 제가 다니고 있는 대학 프로그래밍 경진대회에 출제되었던 문제입니다. 대회 중에는 시간초과로 결국 해결하지 못했었던 것 같은데, 이번에 다시 풀어보았습니다. 첫째 줄에 N, M, K, X 정수가 주어지고, 둘째 줄에는 N개의 정수가 주어지는데, 차례대로 직전 라운드 대비 점수가 얼마나 증감되었는지에 대한 값입니다. 세번째 줄부터는 M줄에 거쳐 몇 라운드부터 몇 라운드 직전까지 K보다 낮은 점수를 받았던 횟수가 얼마인지에 대한 정보가 주어집니다. 중복 계산을 최대한 줄이기 위해 둘째 줄에 주어진 정보를 가공하기로 했습니다. 문제 해결에 있어서 점수 그 자체는 그다지 중요하지 않고, 다만 K보다 점수가 높은지, 낮은지에 대한 정보만 필요하다는 점을 고려합니다. 더보기 두 라운드 간의 점수를 비교하기만 하면 되.. 2023. 2. 1.
두 번째 블로그를 만들다 작년에 SPARC 어셈블리 언어 과목을 들으면서 기록의 중요성을 뼈저리게 느꼈다. 워낙 오래된 언어인 탓에 영어로 구글링을 해도 자료를 찾기가 쉽지 않았다. 그 와중에 블로그 기능이 모조리 망가진 어느 낡디 낡은 한국 블로그 한 구석에서 나온 짧막한 정보가 얼마나 도움이 되었는지 모른다. 이미 네이버 블로그 하나를 운영하고 있지만 어쩌다보니 상업적인 리뷰가 주로 올라오는 블로그가 되어버린 탓에 이제는 전공과 관련된 이야기를 풀어내기에는 부적절하다고 느껴졌다. 뭐 사실 그것도 문제지만 결정적으로 네이버 블로그는 구글에 검색이 잘 안 된다는 것 또한 내게는 치명적인 문제로 느껴졌다. 뭐라도 적어보자. 누군가에겐 도움이 되겠지. 2023. 2. 1.