본문 바로가기

백준128

[백준 11659/c++] 구간 합 구하기 4 벡터에 accumulate 를 사용하여 푸니 시간초과가 떴다 그렇다면 속도 향상을 위해서 벡터보다 빠르다는 정적 배열을 사용하고 두 개의 구간을 계산하는 accumulate 대신에 누적 합의 차를 통해 얻은 구간합을 이용하여 구간 계산을 두 번에서 한 번으로 연산과정을 줄여 처리 속도를 높여 해결하였다 주석처리한 부분은 시간초과가 났던 벡터 풀이다 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net #include using.. 2022. 7. 22.
[백준 1065/c++] 한수 자리수끼리 빼서 그 차이가 같을때 카운트 하면 되는 간단한 문제 string 을 이용해서 자리수별로 숫자를 따와서 비교해도 되지만 자리수도 3자리뿐이니 그냥 숫자만으로 풀었다 https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net #include using namespace std; int main(){ int n; int a, b, c; int cnt = 0; cin >> n; if (n < 100) { cnt = n; } if (n == 1000) {.. 2022. 7. 21.
[백준 5635/c++] 생일 sort 함수의 정렬을 이해하여 pair 로 짝지어 정렬 우선순위를 적용시켜 뽑아내는 문제이다 https://www.acmicpc.net/problem/5635 5635번: 생일 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오. www.acmicpc.net #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector v(n); for (int i = 0; i > v[i].second.second >> v[i].second.first >> v[i].first.sec.. 2022. 7. 20.
[백준 2579/c++] 계단 오르기 다이나믹 프로그래밍을 이용한 문제이다 특이사항으로 1칸, 2칸 씩만 오를 수 있지만 1칸이 연속되면 안된다는 조건이 걸려있다 1칸 연속이 허용되지 않으면 1칸 2칸 혹은 2칸 1칸 혹은 2칸 2칸 의 순으로 가야되는 것인데 2-1 / 1-2 의 경우는 조건에 맞지 않아 문제가 생긴다 1의 위치가 뒤 앞으로 정해지지 않았을때 생기는 문제이니 1 이후에 2가 무조건 오거나 2 이후에 1이 무조건 오도록 오르게 하면 해결된다 하지만 1이후에 2가 무조건 오게 하는 방법은 1만큼 오르는 것이 필수가 아니므로 1-2 / 2-1 / 2- 2 중 일반화 했을때 1이 먼저 오는 1-2 의 경우는 2-2 를 나타내기 힘드므로 2가 먼저 오게 해서 2 이후에 1이 오는 경우, 안오는 경우 2가지만으로 하여 오르는 방법이 .. 2022. 7. 19.