본문 바로가기

Data science/알고리즘 학습13

백준 1280 : 나무심기 (C++) [세그멘트 트리, 펜윅트리] 처음에 segment tree관련 문제를 찾아보다가 알게되어 풀게되었다. 당연히 segment tree문제이므로 segment tree를 이용해서 구현해야 하지만, 문제 내용만 보니 단순히 배열 입력 받은 후 이중 for문으로 구현이 가능할 것 같아서 구현해보았다. 아니나 다를까 시간초과가 되었다. 그래서 관련 해설을 찾아보던 중 '얍문'님의 블로그에서 펜윅트리를 이용한 풀이와, 펜윅트리에 대한 학습을 할 수 있었다. 풀이 코드는 '얍문'님의 코드를 거의 그대로 가져온 것이며, 개인 기록을 위해 작성해놓은 것이다. 자세한 설명을 원한다면 '얍문'님의 블로그를 확인하기를 강추한다. 정말 똑똑한 친구가 옆에서 수학문제 하나하나 설명해주는 것처럼 글을 잘 써주셨다. (감사합니다!) **문제풀이 방법 - 홀수 .. 2022. 3. 31.
SWEA 5604 : 구간합[D4] (C++) **문제 풀이 방법 - 입력된 숫자의 각 자리수를 더해줘야 하므로, modular 연산(나머지를 사용하는)을 사용한다. - 0~9 자리수 배열을 만든 후, 해당 자리의 값이 몇 번 등장하는지 count 한다. * Java 코드로 친절한 문제풀이를 해주신 은서파님께 감사드립니다. https://goodteacher.tistory.com/403 https://tv.naver.com/v/22678458 *** 코드 #include using namespace std; typedef long long ll; ll arr[10]; void parse(ll x, ll delta) {// 숫자 x의 각 자리수에 delta 만큼 count 증가 while (x > 0) { arr[x % 10] += delta; x /.. 2022. 3. 30.
SWEA 1232 : 사칙연산[D4] (C++) ** 문제 풀이 방법 - 처음 들어오는 값이 숫자인지 문자(연산자)인지 판별 후 재귀적으로 연산 *** 코드 #include #define MAX_N 1001 using namespace std; struct tree { bool is_num; int num; int child_node[2]; }tree[MAX_N]; double calculation(int idx) { if (tree[idx].is_num) { return (double)tree[idx].num; } else { double c1 = calculation(tree[idx].child_node[0]); double c2 = calculation(tree[idx].child_node[1]); switch (tree[idx].num){ ca.. 2022. 3. 28.
c++ 자료형 정리 C++ 자료형 일부 정리 C++에 있는 자료형의 최대값과 최소값을 확인해보자 모든 자료형을 다루지는 않고 자주 사용하는 정수형 자료형의 크기를 출력해보자. #include #include #include using namespace std; int main() { int int_MAX = INT_MAX; int int_MIN = INT_MIN; int Uint_MAX = UINT_MAX; printf("Maximum value of INT : %d\n", int_MAX); printf("Minimum value of INT : %d\n", int_MIN); printf("Maximum value of Unsigned INT : %u\n", Uint_MAX); printf("\n"); short int S.. 2022. 2. 28.