본문 바로가기
728x90

전체 글240

[C++] 백준 1735번: 분수 합 https://www.acmicpc.net/problem/1735 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net 최초풀이 각각의 분모, 분자 수를 만들어서 각각을 2부터 더작은 수까지 나눌 수 있는 수들을 나누는 방식으로 두수 모두 더이상 나눠지지 않을 때까지 과정을 반복해준다. 주의사항 for을 통해 나눠진다면 나눠질 때마다 i를 1로 초기화해주어야 한다.(중복되는 인수들을 나눠주기 위함) #include using namespace std; int main() { int A1, B1, A2, B2, A, B; cin >> A1 >> B1; cin >> A2.. 2021. 7. 29.
[C++] set 자료구조 Set 자료구조란? Set은 연관 컨테이너 중 단순한 컨테이너로 key라 불리는 원소(value)의 집합으로 이뤄진 컨테이너입니다. 모든 연관 컨테이너는 노드 기반 컨테이너이며, 균형 이진 트리로 구현됩니다. 따라서 균형 이진 트리의 모든 특징을 가집니다. 더불어 사용을 위해서 set라이브러리를 include해주어야 합니다. 출력은 보통 for문에 auto를 사용합니다. #include //선언 sets; //입력 s.insert(a); //출력 for (auto vector : s) { for (auto temp : vector) cout 2021. 7. 29.
[C++] 백준 6588번: 골드바흐의 추측 https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net 최초풀이 처음 prime 배열을 활용하여 2-1,000,000까지의 모든 소수를 구합니다.(에라토스테네스의 체) 또한 별도의 벡터를 활용하여 소수들만 따로 뽑아줍니다. 추가적으로 시간초가 에러에 대해서는 아래의 코드와 ios_base::sync_with_stdio(false); cin.tie(nullptr); endl 대신 "\n"을 활용하여 처리하여 해결하였습니다. #in.. 2021. 7. 29.
[C++] 백준 15663번: N과 M (9) https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 최초풀이 15664번과 유사하게 풀이를 진행하였지만 시간초가 에러가 다수 발생하였다. 문제 풀이의 핵심은 set의 사용과 출력시 for문에 auto를 사용한 출력을 해야한다는 점이다. #include #include #include #include using namespace std; int N, M; vectorv, ans;// v:수열을 받음, ans:출력하려는 수열 int arr[10001.. 2021. 7. 29.
[C++] 백준 15664번: N과 M (10) https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 최초풀이 백트랙킹을 통해 진행단계를 관리해줍니다. 정렬을 미리 하면 백트랙킹 시 순차적 그리고 중복을 확인하는 부분에 유리합니다. 정답률이 높아 가볍게 풀어보려고 했는데 의외로 예외처리할 부분도 있고 고려해 주어야할 조건도 좀 있었던 문제였습니다. #include #include #include using namespace std; int N, M; vectorv, ans;// v:수열을 받음.. 2021. 7. 29.
[C++] 백준 17298번: 오큰수 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 최초풀이 하나하나 모든 값을 비교하면서 하면 런타임 오류가 발생합니다. 따라서 스택에 입력값을 입력하면서 들어오는 값과 아직 처리되지 않은 값을 비교하면서 조건을 처리해줍니다. #include #include #include using namespace std; int main(){ int N, k; vectorA(1000000,-1);// 벡터 사이즈 1000000으로 -1값 초기화 stacks;// ci.. 2021. 7. 28.
[C++] 백준 10430번: 나머지 https://www.acmicpc.net/problem/10430 10430번: 나머지 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000) www.acmicpc.net 최초풀이 뒤에 어려운 활용문제가 많이 등장합니다. #include using namespace std; int main() { int A = 0; int B = 0; int C = 0; cin >> A >> B >> C; cout 2021. 7. 28.
[C++] 백준 10844번: 쉬운 계단 수 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 최초풀이 데이터 타입에서 long long을 사용하고 각 부분에서 10억을 나눠주는 부분에서 많이 헤맸던 문제였습니다. #include using namespace std; long long num[101][10]; int main() { int N; long long ans = 0; cin >> N; num[1][0] = 0; for (int i = 1; i 2021. 7. 28.
[C++] 백준 2108번: 통계학 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 최초 풀이 주요부분 최빈값을 구할 때 최대 절대값이 4000인 것을 감안하여 인덱스값으로 빈도를 누적해 줍니다. #include #include #include #include using namespace std; int cnt[8001];// 음수 인덱스를 양수로 만들어줌 int main() { vectorv; int N, k, total = 0; cin >> N; for (int i = 0; i < N; i.. 2021. 7. 28.
728x90