백준 1158번: 요세푸스 문제(C++) www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 코드 #include using namespace std; bool check[5001] = {0, }; int n, k; void solve(int idx, int cnt){ if(cnt == n){ cout k; cout 공부/백준 2020.12.03
백준 2609번: 최대공약수와 최소공배수(C++) www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 코드 #include using namespace std; //최대공약수 int GCD(int n, int m){ if(n % m == 0) return m; return GCD(m, n % m);} int main() { int n, m; cin >> n >> m; cout 공부/백준 2020.12.02
백준 1110번: 더하기 사이클(C++) www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 코드 #include using namespace std; int main() { int n; // 주어진 수 cin >> n; int left, right; // 왼쪽 수, 오른쪽 수 int cycle = 0; // 사이클 수 int num_new = n; // 계산된 수 do{ left = num_new / 10; right = num_new % 10; num_new = right * 10 +.. 공부/백준 2020.12.01
백준 1977번: 완전제곱수(C++) www.acmicpc.net/problem/1977 1977번: 완전제곱수 M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완 www.acmicpc.net 코드 #include using namespace std; bool judge_ps(int n){ for(int i=1; i> n >> m; for(int i=n; i 공부/백준 2020.11.30
백준 1075번: 나누기(C++) www.acmicpc.net/problem/1075 1075번: 나누기 첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다. www.acmicpc.net 코드 #include using namespace std; int main() { int N, F; int answer = 0; cin >> N >> F; N /= 100; N *= 100; while((N+answer) % F != 0 && answer < 100) answer ++; if(answer < 10) printf("0%d", answer); else printf("%d", answer); } 풀이 정수 N의 가장 뒤 두 자리를.. 공부/백준 2020.11.29
백준 9251번: LCS(C++) www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 코드 #include using namespace std; string a, b, temp; int dp[1001][1001] = {0, }; void init(){ cin >> a >> b; if(a.length() > b.length()){ temp = a; a = b; b = temp; } } int max(int a, int b){ return a > b ? .. 공부/백준 2020.11.28
백준 1912번: 연속합(C++) www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 코드 #include using namespace std; int n; int arr[100000]; int dp[100000]; void init(){ cin >> n; for(int i=0; i> arr[i]; } } void solve(){ dp[0] = arr[0]; int max_num = dp[0]; for(int i=1; i arr[i] ? dp[i-1] + arr[i] : arr[i]; max_num = d.. 공부/백준 2020.11.27
백준 2565번: 전깃줄(C++) www.acmicpc.net/problem/2565 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 코드 #include using namespace std; int line[501] = {0, }; int dp[501] = {0, }; int n; int min_idx = 1000; int max_idx = -1000; void init(){ cin >> n; int idx; for(int i=0; i> idx; min_idx = idx .. 공부/백준 2020.11.26