728x90
반응형

백준 87

[백준/백트래킹/C++] 10819번 차이를 최대로

https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 문제 해결 방법 백트래킹을 사용하여 가능한 수열을 모두 만들고 각각 주어진 식의 최대값을 구해 제일 큰 값을 찾는다 #include using namespace std; int n; int arr[10]; // 만든 수열을 담을 배열 int num[10]; // 입력받을 배열 bool isused[10]; // 사용했는지 체크 int result = 0; void solve(){ // 주어진 식을 이용하여 최대..

알고리즘 2023.01.07

[백준/백트래킹/C++] 15649번 N과 M(1)

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 알고리즘을 사용하는 문제이다 #include using namespace std; int n, m; int arr[10]; bool isused[10]; void backtrack(int k){ if(k==m){ for(int i=0; i

알고리즘 2023.01.07

[백준/완전탐색/C++] 1476번 날짜 계산

https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 문제 해결 방법 1부터 1씩 증가시키면서 조건에 맞는 수를 찾는다 #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int e, s, m; cin >> e >> s >> m; int result = 1; while(1){ if((result-e)%15==0 && (result-s)%28==0 && (re..

알고리즘 2023.01.06

[백준/분할정복/C++] 1992번 쿼드트리

https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 문제가 처음에는 이해가 안됐는데 아래처럼 풀면 된다 분할정복을 사용하면 된다 #include using namespace std; int n; string mapp[64]; bool check(int x, int y, int n){ for(int i=0; i

알고리즘 2023.01.05

[백준/재귀/C++] 11729번 하노이 탑 이동 순서

https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제 해결방법은 위와같다 #include using namespace std; int n; void Hanoi(int n, int start, int mid, int end){ // 시작 보조 목표 if(n==1){ cout

알고리즘 2023.01.05

[백준/분할정복/C++] 1780번 종이의 개수

https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 분할정복을 이용하여 풀면 된다 주의할 점 모두 같은 수인지 체크하는 check함수에서 for 문 돌릴때 mapp[x+i][y+j] 확인 divide 함수에서 for문 돌릴때 전체 n이 아니라 나누어진 수 만큼만 돌리면 됨 #include using namespace std; int n; int result[3]; // [0]:-1종이개수, [1]:0종이 개수, [2]:1종이 개수 int..

알고리즘 2023.01.04

[백준/퀵소트/C++] 11728번 배열 합치기

https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 두가지 방법으로 풀었는데 표준 라이브러리를 사용하는 방법과 퀵소트를 구현하는 방법으로 풀었다 표준 라이브러리 이용 #include using namespace std; int n, m; vector a; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for(int i=0; i> x; a..

알고리즘 2023.01.04

[백준/이분탐색/C++] 10816번 숫자 카드 2 (upper_bound, lower_bound 사용)

https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net upper_bound(), lower_bound() [C++] lower_bound, upper_bound (이진탐색)/ 예제 헤더파일 #include lower_bound 찾으려는 value 값보다 같거나 큰 숫자가 배열에서 처음 등장하는 위치 리턴 사용 조건 : 탐색을 진행할 배열 또는 벡터가 오름차순 정렬되어 있어야 함 사용법 lower_bound( deve..

알고리즘 2023.01.03

[백준/이분탐색/C++] 10815번 숫자 카드

https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 해결 방법 상근이가 가지고 있는 카드를 정렬해준다 이분탐색을 사용한다 #include using namespace std; int n, m; vector a, b; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> n; for(int i=0; i> x; a.push_back(x); } sort(a.beg..

알고리즘 2023.01.03

[백준/이분탐색/C++] 2805번 나무 자르기

https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 유의사항 자른 길이의 합을 구할때 나무가 자르는 길이보다 큰 경우에만 수행이 되도록 조건을 넣어주어야 한다 자른 길이와 길이의 합은 long long int 형으로 선언해주어야 한다 #include using namespace std; int n, m; vector v; int main(void) { ios::sync_with_stdio(0); cin.tie..

알고리즘 2023.01.02
728x90
반응형