일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dfs
- C언어
- web
- 백준
- BOJ
- Algospot
- 정수론
- Algorithm
- Python
- C
- greedy
- JavaScript
- 인프런
- String
- programmers
- Math
- 따라하며 배우는 C언어
- Cleancode
- 따라하면서 배우는 C언어
- udemy
- php
- BASIC
- graph
- server
- 종만북
- sorting
- 따배씨
- BFS
- DP
- 생활코딩
- Today
- Total
목록전체 글 (420)
몽상실현개발주의
따배씨 - 따라하며 배우는 C언어 16강 전처리기와 라이브러리 16.14 표준 유틸리티 Utilities 라이브러리 #include #include /* rand(), srand(), malloc(), free(), ... */ void goodbye(void) { printf("GoodBye\n"); } void thankyou(void) { printf("Thankyou\n"); } int main() { printf("Purchased?\n"); if (getchar() == 'y') atexit(thankyou); // 프로그램이 종료 될 때, 런타임에서 실행 시킬 함수를 등록 while (getchar() != '\n') {}; printf("Goobye message?\n"); if (getc..
https://www.algospot.com/judge/problem/read/GRADUATION algospot.com :: GRADUATION 졸업 학기 문제 정보 문제 1학년은 노는 게 남는 거란 선배의 말을 철석같이 믿고, 전공 과목은 다 수강철회하고 교양 과목은 다 F 받는 방탕한 1학년을 보냈던 태우는 이제 와서 자신의 행동을 www.algospot.com 풀이 비트마스크를 사용하여 효율적인 해결이 가능한 DP 문제이다. 어렵다!!!! 1. 각 학기별 수강 가능한 과목 확인 2. 수강 가능한 모든 경우 고려, 각 경우에 대한 memorization 3. 졸업이 가능한 조건 시, 최소학기 확인 모든 경우를 고려하면서 최적화를 위해 각 학기별 수강과목 경우에 따라 수강여부를 기록 해야 한다. 하지..
[종만북] 비트마스크 / 자료구조 / Python 파이썬 비트마스크 정수 의 이진수 표현을 자료 구조로 쓰는 기법 비트마스크는 엄밀하게 말해 자료 구조라고 할수는 없지만, 종종 굉장히 유용하게 사용됨. 비트마스크 장점 더 빠른 수행 시간 비트마스크 연산은 0(1)에 구현되는 것이 많기 때문에, 다른 자료 구조를 사용하는 것보다 훨씬 빨리 동작 연산을 굉장히 여러번 수행 해야 할 경우, 작은 최적화로 큰 속도 향상 더 간절한 코드 다양한 집합 연산들을 반복문 없이 한 줄에 쓸 수 있기 때문에 짧은 코드로 작성 더 작은 메모리 사용량 같은 데이터를 더 적은 메모리를 사용해 표현 많은 데이터를 미리 계산해 두어 있으면 프로그램도 속도 향상 캐시 효율 좋음 연관 배열을 배열로 대체 같은 정보를 객체가 아닌 정수..
[종만북] 모듈라 연산 / 정수론 모듈라 연산 (Modular Arithmetic) 모듈라 M 에 도달 하면, 다시 0으로 돌아가는 정수들로 하는 연산 모듈라 연산에서 모든 정수는 M 으로 나눈 나머지로 표현됨 ex) 시계 모듈라 덧셈 두 수의 합의 모듈라 연산은, 두 수의 모듈라 연산 결과의 합과 같다. (a + b) % M = (a' + b') % M a % M = a' , b % M = b' -> (a + b) % M = ? a = Mx + a' , b = My + b' (a + b) = (Mx + a') + (My + b') = M(x+y) + ( a'+b') (a + b) % M = ( M(x+y) + a' + b') % M = (a' + b') % M -> (a + b) % M = (a' + ..
https://www.algospot.com/judge/problem/read/POTION# algospot.com :: POTION 마법의 약 문제 정보 문제 마법의 약 수업 시간에 교수님의 설명을 안 듣고 졸던 헤리는 실수로 냄비에 몇 가지 재료의 양을 잘못 넣고 말았습니다. 약의 색깔이 심상치 않게 변하는 것을 눈치챈 www.algospot.com [종만북] POTION / solution 효율적인 알고리즘 / Python 파이썬 Solution 효율적인 알고리즘 - r_list 들의 약수를 찾아 해결 1. 모든 재료 중 가장 많이 들어간 재료 찾기 -> X = max( p_list[i] / r_list[i] ), 모든 재료는 X 배 이상 들어야가한다. 2. r_list[i] * X 는 항상 정수 ..
https://www.algospot.com/judge/problem/read/POTION# algospot.com :: POTION 마법의 약 문제 정보 문제 마법의 약 수업 시간에 교수님의 설명을 안 듣고 졸던 헤리는 실수로 냄비에 몇 가지 재료의 양을 잘못 넣고 말았습니다. 약의 색깔이 심상치 않게 변하는 것을 눈치챈 www.algospot.com [종만북] POTION / solution 직관적인 알고리즘 / Python 파이썬 Solution 직관적인 알고리즘 - 비율이 맞을 때까지 재료들을 계속 더 넣어보는 방법 1. 첫번째 재료는 4숟가락을 넣어야 하는데, 7 숟가락을 넣음 -> 다른 재료들도 최소 7/4 배 넣어야 함 2. 두번째 재료는 6 x ( 7/4 ) = 10.5 숟가락 넣어야 하는..
https://www.algospot.com/judge/problem/read/POTION# algospot.com :: POTION 마법의 약 문제 정보 문제 마법의 약 수업 시간에 교수님의 설명을 안 듣고 졸던 헤리는 실수로 냄비에 몇 가지 재료의 양을 잘못 넣고 말았습니다. 약의 색깔이 심상치 않게 변하는 것을 눈치챈 www.algospot.com 풀이 주어진 정수 배열의 최대공약수를 구하여 해결하는 문제이다. 최대공약수를 구하기위해 유클리드 알고리즘 을 활용하였다. c = int(input()) def get_gcd(p, q): if q == 0: return p return get_gcd(q, p % q) def get_r_gcd(r_list): for i in range(1000, 0, -1)..
[종만북] 두 수의 최대공약수 구하기 / 정수론 / Python 파이썬 1. 유클리드 알고리즘 - 유클리드 알고리즘 (Euclidean algorithm) p, q (p > q) 의 공약수의 집합 == p-q, q 의 공약수 집합 gcd(p, q) == gcd(p-q, q) gcd(6, 15) = gcd(9, 6) = gcd(3, 6) = gcd(3, 3) = gcd(3, 0) def get_gcd(p, q): if p < q: p, q = q, p if q == 0: return p return get_gcd(p-q, q) gcd = get_gcd(6, 15) print(gcd) # 3 2. 유클리드 알고리즘 최적화 gcd(1024, 6) = gcd(1018, 6) = gcd(1012, 6) = .....