BOJ
-
문제 링크 : https://www.acmicpc.net/problem/16194 16194번: 카드 구매하기 2 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 문제 분류 : 다이나믹 프로그래밍 https://infinitt.tistory.com/246 알고리즘 - 다이나믹 프로그래밍 (Dynamic Programming) 다이나믹 프로그래밍 (Dynamic Programming) : DP 개념 : 문제를 더 작은 단위로 쪼개어 해결하는 알고리즘. (분할 정복 알고리즘과 비슷하다. 차이점은 바로 아랫줄.) 핵심은, 그 작은 단위의 문제들이 반복..
백준 (boj) 파이썬 - 16194번 : 카드 구매하기 2 (DP)문제 링크 : https://www.acmicpc.net/problem/16194 16194번: 카드 구매하기 2 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 문제 분류 : 다이나믹 프로그래밍 https://infinitt.tistory.com/246 알고리즘 - 다이나믹 프로그래밍 (Dynamic Programming) 다이나믹 프로그래밍 (Dynamic Programming) : DP 개념 : 문제를 더 작은 단위로 쪼개어 해결하는 알고리즘. (분할 정복 알고리즘과 비슷하다. 차이점은 바로 아랫줄.) 핵심은, 그 작은 단위의 문제들이 반복..
2020.04.24 -
다이나믹 프로그래밍 (Dynamic Programming) : DP 개념 : 문제를 더 작은 단위로 쪼개어 해결하는 알고리즘. (분할 정복 알고리즘과 비슷하다. 차이점은 바로 아랫줄.) 핵심은, 그 작은 단위의 문제들이 반복해서 일어나기 때문에, 그값들을 저장해놓는 식으로 해결해나가는 알고리즘 (다이나믹이라는 이름에는 아무 뜻도 없다고 한다.) *다이나믹 프로그래밍을 사용하기 위한 조건 1. 부분 문제들이 겹치는가 (반복 되는가) ex ) 피보나치 수 : N번째 항(큰 문제) = N-1번째 항(작은 문제) + N-2 번째 항(작은 문제) 피보나치의 특성을 잘 살펴보면 Fibo(10)을 구할때는 Fibo(9)+Fibo(8)...........Fibo(1) 까지 모두 필요합니다. 이때 메모이제이션을 통해 배..
알고리즘 - 다이나믹 프로그래밍 (Dynamic Programming)다이나믹 프로그래밍 (Dynamic Programming) : DP 개념 : 문제를 더 작은 단위로 쪼개어 해결하는 알고리즘. (분할 정복 알고리즘과 비슷하다. 차이점은 바로 아랫줄.) 핵심은, 그 작은 단위의 문제들이 반복해서 일어나기 때문에, 그값들을 저장해놓는 식으로 해결해나가는 알고리즘 (다이나믹이라는 이름에는 아무 뜻도 없다고 한다.) *다이나믹 프로그래밍을 사용하기 위한 조건 1. 부분 문제들이 겹치는가 (반복 되는가) ex ) 피보나치 수 : N번째 항(큰 문제) = N-1번째 항(작은 문제) + N-2 번째 항(작은 문제) 피보나치의 특성을 잘 살펴보면 Fibo(10)을 구할때는 Fibo(9)+Fibo(8)...........Fibo(1) 까지 모두 필요합니다. 이때 메모이제이션을 통해 배..
2020.04.23 -
문제 링크 : https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 www.acmicpc.net 에라토스테네스 개념 : https://infinitt.tistory.com/232 알고리즘 (1) - 수학 : ..
백준 (boj) 파이썬 - 2960번 : 에라토스테네스의 체문제 링크 : https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 www.acmicpc.net 에라토스테네스 개념 : https://infinitt.tistory.com/232 알고리즘 (1) - 수학 : ..
2020.04.18 -
문제 링크 : https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 에라토스테네스의 체를 이용하면 된다. https://infinitt.tistory.com/232 알고리즘 (1) - 수학 : 유클리드 호제법 , 에라토스테네스의 체 (나머지 연산, 최대 공약수, 최소공배수, 소수) codepuls의 sw역량테스트_기초파트를 듣고 정리한 내용입니다. 수학과 관련한 기초문제에는 크게 3가지 분류로 나뉘어진다. 나머지 연산 최대 공약수, 최소 공배수 소수 (prime number) 1...
백준 (boj) 파이썬 - 1929 : 소수 구하기문제 링크 : https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 에라토스테네스의 체를 이용하면 된다. https://infinitt.tistory.com/232 알고리즘 (1) - 수학 : 유클리드 호제법 , 에라토스테네스의 체 (나머지 연산, 최대 공약수, 최소공배수, 소수) codepuls의 sw역량테스트_기초파트를 듣고 정리한 내용입니다. 수학과 관련한 기초문제에는 크게 3가지 분류로 나뉘어진다. 나머지 연산 최대 공약수, 최소 공배수 소수 (prime number) 1...
2020.04.18 -
수학과 관련한 기초문제에는 크게 3가지 분류로 나뉘어진다. 나머지 연산 최대 공약수, 최소 공배수 소수 (prime number) 1. 나머지 연산 (Modular Arithmetic) Python 으로 문제를 푼다면 상관없겠지만, C++ , Java와 같은 경우에는 표현할 수 있는 정수의 길이가 제한되어있다. 가장 긴 정수 표현방법인 longlong으로 했을때 8byte이므로.... 따라서 문제에서는 이를 n으로 나눈 나머지를 구하라 와 같은 방식으로 출제하게 된다. 흔히 %를 사용하는 modular. * 이러한 유형의 문제를 풀때 알아두면 좋은 공식 덧셈 : (A+B)%C = (A%C + B%C)%C 곱셈 : (A*B)%C = (A%C * B%C)%C 뺄셈 : (A-B)%C = ((A%C)-(B%C)..
알고리즘 (1) - 수학 : 유클리드 호제법 , 에라토스테네스의 체 (나머지 연산, 최대 공약수, 최소공배수, 소수)수학과 관련한 기초문제에는 크게 3가지 분류로 나뉘어진다. 나머지 연산 최대 공약수, 최소 공배수 소수 (prime number) 1. 나머지 연산 (Modular Arithmetic) Python 으로 문제를 푼다면 상관없겠지만, C++ , Java와 같은 경우에는 표현할 수 있는 정수의 길이가 제한되어있다. 가장 긴 정수 표현방법인 longlong으로 했을때 8byte이므로.... 따라서 문제에서는 이를 n으로 나눈 나머지를 구하라 와 같은 방식으로 출제하게 된다. 흔히 %를 사용하는 modular. * 이러한 유형의 문제를 풀때 알아두면 좋은 공식 덧셈 : (A+B)%C = (A%C + B%C)%C 곱셈 : (A*B)%C = (A%C * B%C)%C 뺄셈 : (A-B)%C = ((A%C)-(B%C)..
2020.04.17 -
문제 링크 : https://www.acmicpc.net/problem/1377 1377번: 버블 소트 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 일단 이 문제를 풀기 위해서는 버블정렬을 알아야했다. 그래서 버블정렬에 대해 먼저 정리해 보았다. https://infinitt.tistory.com/228 버블 정렬 (bubble sort) * 버블정렬의 개념 두 인접한 원소를 검사하여 정렬하는 방법을 말한다. 시간 복잡도는 느리지만, 코드는 단순하다. 교환정렬의 일부에 속한다. 원소가 이동하는 모습이 거품..
백준(boj) 파이썬 - 1377 번 : 버블 소트문제 링크 : https://www.acmicpc.net/problem/1377 1377번: 버블 소트 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 일단 이 문제를 풀기 위해서는 버블정렬을 알아야했다. 그래서 버블정렬에 대해 먼저 정리해 보았다. https://infinitt.tistory.com/228 버블 정렬 (bubble sort) * 버블정렬의 개념 두 인접한 원소를 검사하여 정렬하는 방법을 말한다. 시간 복잡도는 느리지만, 코드는 단순하다. 교환정렬의 일부에 속한다. 원소가 이동하는 모습이 거품..
2020.04.13