일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 최소스패닝트리
- 코드그라운드
- tensorflow
- 최소신장트리
- 피보나치수열
- 알고리즘
- 이친수
- 알고스팟
- 다이나믹 프로그래밍
- 축사 배정
- Mysql5.7
- Floyd-Warshall
- Ubuntu64bit
- pythonanywhere
- 연속합
- 네이버 지도 api
- 쉬운 계단 수
- 백준
- 피노나치 수열
- VituralBox
- 나무자르기
- 이분매칭
- 이분 매칭
- 세그먼트 트리
- 백트래킹
- SpringBoot
- 분할정복
- 이분탐색
- 동적계획법
- Flpyd-Warshall
- Today
- Total
목록백준 (28)
초보개발자
입력: 컴퓨터 개수 N(100 이하의 자연수), 컴퓨터 연결된 쌍 M, M개의 쌍이 주어진다.(양방향)출력: 1번 컴퓨터와 연결된 컴퓨터 개수알고리즘: Floyd-Warshall소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; int main() { int n, m, u, v; scanf("%d %d", &n, &m); vector computer(n + 1, vector(n + 1, false)); for(int i=0; i
입력: 자릿수 N (1≤N≤90)출력: 자릿수 N개의 이친수의 개수이친수 조건: 1) 0으로 시작하지 않는다 2) 연속으로 1이 나오지 않는다풀이: 피보나치를 이용해서 문제를 풀었는데, 우선 1개 자릿수의 이친수는 "1"로 한 개이고 2개 자릿수의 이친수는 "10"으로 한 개이다. (이하 n 자릿수의 이친수를 이친수(n))이라 하겠다.이친수(3) 100, 101이친수(4) 1000, 1001, 1010이친수(5) 10000, 10001, 10010, 10100, 10101 위와 같이 정해진다. 특징으로 무엇을 알 수 있냐면 이 이친수(n)는 이친수(n - 1)에는 0을 붙이고 이친수(n - 2)에 01을 붙인 것과 같다.즉, 이친수(n) = 이친수(n - 1) + 이친수(n - 2) 로 피보나치 수열이다..
입력: 계단의 수 N(N는 300이하의 자연수), N개의 계단 점수(계단 점수는 10,000이하)출력: 마지막 계단을 밟고 나서 최대 총합조건: 1) 한 칸 혹은 두 칸을 뛸 수 있다 2) 연속으로 세칸을 밟을 수 없다 3) 마지막 계단은 무조건 밟아야 한다실패한 소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; int main() { int N; scanf("%d", &N); vector step(N + 1), dp(N + 1); step[0] = dp[0] = 0; for (int i = 1; i
입력: 정수개수 N( 1≤N≤100,000) , 이후 N개의 정수 Ai ( -1,000 ≤ Ai ≤ 1,000)출력: 연속된 숫자들의 합 중 최댓값소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; int max(int a, int b) { return (a > b ? a : b); } int main() { int n, MAX; scanf("%d", &n); vector dp(n), arr(n); for (int i = 0; i < n; i++) scanf("%d", &arr[i]); dp[0] = MAX = arr[0]; for (int i = 1; i < n; i++) { dp[i] = max(arr[i], dp[i..
입력: 질의개수 N (질의종류: push X, pop, top, empty, size)출력: 질의에 대한 출력소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; struct Stack { vector arr; int sz; Stack() : sz(0) {} void push(int X) { arr.push_back(X); sz++; } int pop() { if (sz == 0) return -1; else { int x = arr[--sz]; arr.pop_back(); return x; } } int top() { if (sz == 0) return -1; else return arr[..
입력: 테스트 케이스N, 괄호( '(', ')'만 있고 2이상 5이하)출력: 올바른 괄호 케이스이면 "YES" 아니면 "NO"자료구조: 스택소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int main() { int N, sz; bool isRight; cin >> N; string str; for (int i = 1; i > str; sz = str.size(); isRight = true; stack s; if (sz % 2 == 1) isRight = false; else { for (int j = 0; j < sz; j++) { if (str[j] == '(') s.push(str[j]); e..
입력: 월곡이가 살아온 날 N, 쿼리의 개수 Q1 p x : 생후 p일에 x를 추가 (1 ≤ p ≤ N, -109 ≤ x ≤ 109)2 p q : 생후 p일부터 q일까지 변화한 양 (1 ≤ p ≤ q ≤ N)출력: 각 쿼리에 대한 계산된 값알고리즘: 세그먼트 트리소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; #define ll long long void update(vector&, int, int, int, int, ll); ll sum(vector&, int, int, int, int, int); int main() { int N, Q; scanf("%d %d", &N, &Q); int h = (i..
입력: 직사각형의 수 n(1≤n≤100,000) , n개의 직사각형의 높이 hi(1≤hi≤1,000,000,000), n = 0이면 종료출력: 각 테스트케이스에 대해서, 히스토그램에서 가장 큰 직사각형의 넓이알고리즘: 세그먼트 트리실패한 소스코드#define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; #define ll long long #define MAX 1000*1000*1000 + 1 ll min(ll a, ll b) { return (a b ? a : b); } ll init(vector& height, ve..