본문 바로가기

전체 글50

[Python 자료구조] max-heap, min-heap과 heapq 모듈 heap heap이란 최대값 또는 최소값을 빠르게 찾기 위해서 고안된 트리모양의 자료구조이다. 이진 트리에서 각 노드의 키 값이 그 자식 노드보다 큰 트리를 최대 트리(max tree)라고 하며, 최대 힙(max heap)은 최대 트리의 특성을 만족하는 완전 이진 트리(complete binary tree)이다. 최대 힙의 루트노드에는 트리의 최대값이 저장된다. 최소 트리(min tree)는 각 노드의 값이 그 자식 노드보다 작은 트리이다. 최소 힙(min heap)은 최소 트리이면서 완전 이진 트리 조건을 만족한다. 최소 힙의 로트노드에는 트리의 최소값이 저장된다. 노드 추가 max heap에서 노드 추가하기 알고리즘 과정 최대 힙의 마지막 노드 다음에 새로운 노드를 추가한다. 새 노드와 그 부모 노드.. 2023. 1. 12.
[Algorithm] Week 2. 그리디 알고리즘 스터디 코드와 규칙 정리: https://github.com/5jisoo/Algorithm-Study GitHub - 5jisoo/Algorithm-Study: [2023 Winter ~ ] Algorithm Study ✏️ 알고리즘 스터디를 위한 저장소입니다. [2023 Winter ~ ] Algorithm Study ✏️ 알고리즘 스터디를 위한 저장소입니다. - GitHub - 5jisoo/Algorithm-Study: [2023 Winter ~ ] Algorithm Study ✏️ 알고리즘 스터디를 위한 저장소입니다. github.com 교재: 이것이 취업을 위한 코딩 테스트다 with 파이썬 그리디 알고리즘 탐욕법. 현재 상황에서 지금 당장 좋은 것만 고르는 알고리즘. 매 순간 가장 좋아.. 2023. 1. 12.
[Algorithm] Week 1. 큐와 스택 알고리즘 스터디 코드와 규칙 정리: https://github.com/5jisoo/Algorithm-Study GitHub - 5jisoo/Algorithm-Study: [2023 Winter ~ ] Algorithm Study ✏️ 알고리즘 스터디를 위한 저장소입니다. [2023 Winter ~ ] Algorithm Study ✏️ 알고리즘 스터디를 위한 저장소입니다. - GitHub - 5jisoo/Algorithm-Study: [2023 Winter ~ ] Algorithm Study ✏️ 알고리즘 스터디를 위한 저장소입니다. github.com 교재: 이것이 취업을 위한 코딩 테스트다 with 파이썬 큐 Queue 큐 = 줄 서기 기본 원리는 FIFO (First In First Out) 인큐 e.. 2023. 1. 12.
2/4 [C] 백준 1010번 - 다리 놓기 https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 결과는 시간초과 #define _CRT_SECURE_NO_WARNINGS #include int combi(int m, int n) { if (n == m) return 1; if (n == 1) return m; return combi(m - 1, n - 1) + combi(m - 1, n); } int main() { int testcase, n, m; scanf("%.. 2022. 2. 4.
2/4 [C] 백준 1476번 - 날짜 계산 https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int e, s, m,cnt=0; int e1 = 0, s1 = 0, m1 = 0; scanf("%d %d %d", &e, &s, &m); while (1) { e1++; s1++; m1++; cnt++; if (e1 > 15) e1 = 1; if (s1 > 28) s1 = 1; if (m1 > 19) m1.. 2022. 2. 4.
2/3 [C] 백준 1439번 - 뒤집기 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { char s[1000001]; int i, cnt1=0, cnt2=0; scanf("%s", &s); if (s[0] == '0') cnt1++; else cnt2++; for (i = 1; s[i] != '\0'; i++) { if (s[i] != s[i-1]) { if (s[i] == '0') cn.. 2022. 2. 3.
2/3 [C] 백준 1312번 - 소수 https://www.acmicpc.net/problem/1312 1312번: 소수 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. www.acmicpc.net 첫번째 #define _CRT_SECURE_NO_WARNINGS #include int main() { int a, b,c; int n; scanf("%d %d %d", &a, &b, &n); while (n--) { a *= 10; } printf("%d", a/b%10); } 두번째 #define _CRT_SECURE_NO_WARNINGS #include int main() { int a,.. 2022. 2. 3.
1/29 [C] 백준 1316번 - 그룹 단어 체커 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int test,cnt,i; scanf("%d", &test); cnt = test; while (test--) { int alpha[27] = { 0 }; char word[101] = { 0 }; scanf("%s", &word); for (i = 0; word[i].. 2022. 1. 29.
1/28 [C] 백준 1094번 - 막대기 https://www.acmicpc.net/problem/1094 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int x,i,cnt=0; scanf("%d", &x); for (i = 64; i >= 1; i /= 2) { if (i 2022. 1. 28.
1/28 [C] 백준 1292번 - 쉽게 푸는 문제 https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int a, b,i,sum=0,cnt=1,k=1; int s[1001] = { 0 }; scanf("%d %d", &a, &b); for (i = 1; i k) { cnt = 1; k++; } } for (i = a; i 2022. 1. 28.