목록C,C++ (125)
오답노트
https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net - 문제 파악 정수 N이 주어지고 N개의 수열이 주어진다. 이 수열을 적절히 조합하여 아래 식으로 계산 하였을때 최대값을 출력하라. |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]| -정답 아래 식을 대충봐서 처음에 이해가 안됐지만 자세히 보니 N-2 까지 자기 자신과 다음 수열과의 차에 대한 절대값을 계속 더하는 공식이다. 사전순으로 찾아가기 위해 받은 수열을..
https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net - 문제 파악 주어진 순열의 사전순으로 이전 순열을 출력, 출력할 수 없을 때는 -1을 출력한다. https://dhjkl123.tistory.com/46 STL 순열 관련 함수 ( next_permutation, prev_permutation, rotate) - next_permutation 오름차순 정렬된 컨테이너를 받는다 입력 컨테이너의 다음 순열을 입력 컨테이너에 입력한다. 다음 순열이 존재하면 true, 존재하지 않으면 false #includ..
- next_permutation 오름차순 정렬된 컨테이너를 받는다 입력 컨테이너의 다음 순열을 입력 컨테이너에 입력한다. 다음 순열이 존재하면 true, 존재하지 않으면 false #include // std::cout #include // std::next_permutation, std::sort using namespace std; int main() { vector vnt = { 1,2,3 }; while (next_permutation(vnt.begin(), vnt.end())) { for (auto& i : vnt) cout
https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net - 문제 파악 주어진 순열의 다음 순열을 출력한다. 다음 순열이 없을 경우 -1 을 출력한다. - 나의 접근 재귀로 주어진 순열을 찾고 그 다음 순열을 찾도록 했으나, 채점률이 아예 오르지도 못한채 문제를 계속틀렸다. -정답 STL 함수중에 순열에 관련된 함수가 있었다. (진짜 왕짜증.. 이러면서 배우는거지..) https://dhjkl123.tistory.com/46 STL 순열 관련 함수 ( next_permutation, prev_permutation..
https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net - 문제 파악 부등호 문자열을 주고 부등호 사이에 각 부등호를 만족하는 수를 넣는다. 그 수를 합쳐서 한 개의 수를 만들 때 그 수의 최대값과 최소값을 출력하라. - 정답 재귀 함수 완전탐색 #include "bits/stdc++.h" using namespace std; int n; char szarr[10]; int narr[10]; string strmax; string strmin; string str..
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net - 문제 파악 NxN 배열에 임의 숫자들이 들어가 있고, 0부터 N-1 중에서 N/2 개의 숫자를 임의로 택한 숫자들의 원소의 합과 나머지 숫자들의 원소의 합의 차가 제일 작은 수를 출력한다. - 나의 접근 재귀로 접근하는 것은 좋았으나, 좀 더 경우의 수를 줄이려는 법을 찾다가 코드가 더 복잡해져버렸다. 직관적으로 접근해도 괜찮았을것 같다. (지금까지 경험으로 직관적으로 했을때 시간초과가 날지 안날지 판단하는게 제일..
https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net - 문제 파악 임의의 숫자 N이 주어이고 그 수를 1부터 N까지 이어 붙혀 새로운 수를 만들 수 있다. 이 새로운 수의 자리수를 구하여라 - 정답 1. N 의 자리수를 nSize라고 할때, nSize -1 자리수까지는 1부터 10^nSize -2 이므로 모두 더한다. 2. 나머지 10^nSzie-1 부터 N까지는 nSize 자리수 가 N - 10^nSize -1 개 만큼 있으므로 nSize * (N - 10^nSize - 1)을 1번과 더한다. #include "bits/stdc++.h" using namespace ..
https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net - 문제 파악 15진수 28진수 19진수로 주어진 수로 원래 숫자를 알아낸다. - 실수 시간 초과로 헤멨는데, 각각 15, 28, 19 중 하나라도 해당되면 if 문으로 들어가지 못해 무한루프를 돌았다. 예외 처리하니 바로 통과 - 정답 #include "bits/stdc++.h" using namespace std; int ans; int main() { cin.tie(NULL); ios::sync_..
https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net - 문제 접근 4종류의 사탕이 NxN의 배열에 존재할 때,인접한 한 쌍의 사탕을 바꿔서 상하 또는 좌우로 가장 긴 사탕의 개수를 구한다. 0. 초기값에서 중복되는 사탕의 개수 중 최대값 저장 1. bfs와 같은 원리로 인접한 사탕이 다른 위치를 큐로 저장 2. 큐를 돌면서 상하좌우에 자신과 다른 사탕이 있으면 바꿈 3. 바꾼 열과 행을 확인하여 중복되는 사탕의 개수 확인 4. 3에서 얻은 값의 최대값과 0번의 최대값 비교 5. 1~4 반복해서 최대값을 출력 - 정답 (중복되는 코드는 함수로 만들자) #include..
https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net - 문제 파악 9명의 난쟁이들 키중에서 7명의 키의 합이 100임을 이용한다. - 나의 시도 9명의 모든 경우의 수를 살피면서 100 - (경우의 수 합) = 0 임을 이용하려고 했으나 너무 복잡하게 접근 - 정답 9명 모두의 합중에서 2명의 키만 빼면 100이 됨을 이용, 나의 시도와 비슷하지만 nCk = nCn-k 임을 이용해서 문제를 더 간단하게 만들었다. #include "bits/stdc++.h"..