본문 바로가기

전체 글

(238)
[C/C++ 백준 9372번] 상근이의 여행 (Silver 3) www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 각 edge마다 하나의 비행기가 담당하고 있고, 주어진 모든 그래프가 연결그래프이기 때문에 최소 N-1번으로 모든 노드를 이을 수 있다. #include #include using namespace std; int main(void){ int T, N, M, a, b; scanf("%d", &T); for(int i=0; i
[C/C++ 백준 15988번] 1, 2, 3 더하기 3 (Silver 2) www.acmicpc.net/problem/15988 15988번: 1, 2, 3 더하기 3 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net #include #include using namespace std; int dp[1000000]; int main(void){ int T, a; scanf("%d", &T); dp[1] = 1; dp[2] = 2; dp[3] = 4; for(int i=4; i
[C/C++ 백준 15990번] 1, 2, 3 더하기 5 (Silver 3) www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 수의 순서가 달라져도 다른 것으로 치지만, 연속한 두 수는 카운트하지 않는다. dp[i][j]를 정수 i의 끝이 j로 끝나는 가짓수라고 하고 문제를 해결하자. 즉 dp[i][1]의 경우 1로 끝나는 i를 합으로 나타내는 경우의 가짓수 이므로, dp[i-1][2] + dp[i-1][3]의 합이다. #include #include using namespace std; int main(void){ int T, dp[100001][4], a; for(int i=1; i
[C/C++ 백준 2670번] 연속부분최대곱 (Silver 4) www.acmicpc.net/problem/2670 2670번: 연속부분최대곱 N개의 양의 실수가 있을 때, 한 개 이상의 연속된 수들의 곱이 최대가 되는 부분을 찾아, 그 곱을 출력하는 프로그램을 작성하시오. 예를 들어 아래와 같이 8개의 양의 실수가 주어진다면, 색칠된 www.acmicpc.net DP라는 것만 알고 있으면 쉽게 풀 수 있는 문제이다. dp[i]를 i를 마지막으로 하는 색칠의 곱이라고 하면, dp[i]는 num[i]와 dp[i-1]의 곱, 그리고 num[i]중 최대값이 된다. #include #include using namespace std; int main(void){ int N; double dp[10000], num[10000], maxi = -1; scanf("%d", &N)..
[C/C++ 백준 11049번] 행렬 곱셈 순서 (Gold 3) www.acmicpc.net/problem/11049 11049번: 행렬 곱셈 순서 첫째 줄에 입력으로 주어진 행렬을 곱하는데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 231-1 보다 작거나 같은 자연수이다. 또한, 최악의 순서로 연산해도 연산 횟수가 231-1보다 작거나 같 www.acmicpc.net 모든 경우를 다 구해서 dp행렬에 저장해야한다. 0 ~ N-1 까지의 행렬의 곱을 구한다고 가정했을 때, 0 ~ k, k+1 ~ N-1의 두 가지 경우로 나누어 곱셈 연산의 수를 비교해보자. 3중 for문을 돌릴 때, 돌리는 순서에 유의해야 한다. 각 dp마다 어떤 dp값이 필요한지 생각하면서 사용하자. #include #include #include using namespace std; int d..
[HTML, CSS 실습] 기본문서 작성 dinfree.com/lecture/frontend/121_html_exam.html HTML 프로그래밍 기초 HTML 프로그래밍 기초 실습 예제 모음 입니다. dinfree.com 태그는 태그 내의 모든 개행을 제대로 인식해준다. 원래 HTML 문서에서는 두 개 이상의 공백을 무시하는데 pre태그 안에서의 여러문장들은 그대로 출력된다. 위의 캡쳐에서 Hello만 출력되는 이유는, pre태그 안에서는 다른 태그들이 무시되기 때문이라고 한다. 태그와 태그, 태그와 태그는 같은 효과를 주지만, 쓸 때는 구분해서 써야만한다. 같은 효과이지만 다른 이름으로, 컴퓨터가 인식할 때 다르게 인식하기 때문이다. 예를 들어 강조하고 싶은데 태그를 이용한다면 컴퓨터는 그냥 이탈릭체로 인식해버린다. 리스트 안에 다시 리스트..
[C/C++ 백준 1068번] 트리 (Silver 1) www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 기본적인 전략은, 1. 모든 leaf Node의 개수를 찾고, 2. 삭제된 노드부터의 모든 leaf Node 개수를 찾아 빼준다. 3. 그리고 삭제된 노드의 부모 노드의 자식노드(==형제 노드)가 없을 경우, 노드가 삭제되면 부모가 leaf Node로 변하기 때문에 하나 더해준다. #include #include #include using namespace std; int N, x, del; vector ..
[C/C++ 백준 13305번] 주유소 (Silver 4) www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 있는 그대로 구현해주는 것이 관건이다. 차가 가면서 거리를 저장해두었다가, 더 싼 주유소를 만나면 이전 주유소의 가격으로 왔던 거리를 모두 계산해주면 풀 수 있다. #include int main(void){ int N; scanf("%d", &N); int road[N], price[N]; for(int i=0; i