#INFO RATE : 800 출처 : Codeforces Round #479 (Div. 3) https://codeforces.com/problemset/problem/977/A #SOLVE 문제에서 주어진 조건대로 그대로 풀이하기만 하면 되는 간단한 문제였다. if the last digit of the number is non-zero, she decreases the number by one 만약 digit(n)의 마지막 자리의 수가 0으로 끝나지 않는다면 1을 뺀다. if the last digit of the number is zero, she divides the number by 10 (i.e. removes the last digit). 만약 digit(n)의 마지막 자리의 수가 0으로 ..
#INFO 난이도 : SILVER5 문제유형 : 정렬 알고리즘 출처 : https://www.acmicpc.net/problem/2751 #SOLVE 제한시간이 2초이고, N이 최대 1,000,000 이기에 버블정렬 같은 O(N^) 이상의 시간복잡도가 걸리는 정렬 알고리즘을 사용하면 시간초과가 발생한다. 따라서 Intro Sort로 구현된 시간복잡도 O(Nlogn)을 가지는 C++ STL에서 제공하는 sort 함수를 사용했다. _About Sort Function #CODE #include #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; int arr[1000..
#INFO 난이도 : SILVER3 문제유형 : 소수 판별 알고리즘 출처 : https://www.acmicpc.net/problem/1929 #SOLVE 특정 다수의 소수를 판별하는 문제이기에, 에라토스테네스의 채를 이용해 문제를 풀이했다. _about EratosSieve int sieve[1000001] = {0, }; void eratos(int n, int m){ for(int i = 2; i
#INFO 난이도 : SIVLER5 문제유형 : 소수 판별 알고리즘 출처 : https://www.acmicpc.net/problem/1978 #SOLVE 단순히 소수를 판별할 수 있는가에 대한 문제였다. 다양한 방식으로 문제를 풀이할 수 있지만, 1과 자신을 제외한 수 (즉, n - 1) 까지 반복문을 돌려 자기 자신과 나누어 나머지가 존재하는 지 판별하는 방식으로 문제를 풀이하였다. 만약 나머지가 존재한다면 소수가 아니기에 false를 리턴한다. 단, 소수 판별 시 2 ~ n -1 까지의 수는 대칭을 이루기에 math.h 헤더의 sqrt 함수를 사용해 제곱근 까지만 탐색을 수행하였다. bool isPrime(int n){ if(n < 2) return false; for(int i = 2; i t; ..
#INFO 난이도 : SILVER2 문제유형 : 재귀 , DP 출처 : https://www.acmicpc.net/problem/9184 #SOLVE 문제에서 주어진 코드대로 재귀함수를 작성하면 시간초과가 발생한다. 따라서 메모이제이션(Memoization)이라는 기법을 사용해야 한다. 메모이제이션이란, 컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로 동일한 계산의 반복 수행을 제거하는 방식의 알고리즘 기법이다. _about Memoization 우선 문제에서 base condition (모든 재귀의 수렴 조건)을 제시해 주었기에 그대로 작성한다. int recur_w(int a, int b, int c){ // base condition if(a 20) retu..