문제https://www.acmicpc.net/problem/1038백준 문제집 - 0x12강 - 수학 알고리즘: 수학, 백트래킹, 브루트포스풀이음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 출력하는 프로그램을 작성하시오. 0은 0번째 감소하는 수이고, 1은 1번째 감소하는 수이다. 만약 N번째 감소하는 수가 없다면 -1을 출력한다.감소하는 수가 되려면 수의 왼쪽부터 오른쪽까지 내림차순이어야 한다.예를들어,11, 352, 901 → 감소하는 수 X10, 521, 910 → 감소하는 수 O 따라서 0 ~ 9 의 숫자로 만들 수 있는 감소하는 수의 ..
python
문제https://www.acmicpc.net/problem/1011백준 문제집 - 0x12강 - 수학 알고리즘: 수학풀이탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 있다. 예를 들어, 이 장치를 처음 작동시킬 경우 -1 , 0 , 1 광년을 이론상 이동할 수 있으나 사실상 음수 혹은 0 거리만큼의 이동은 의미가 없으므로 ..
문제https://www.acmicpc.net/problem/1456백준 문제집 - 0x12강 - 수학 알고리즘: 수학, 정수론풀이어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다.두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다.에라토스테네스의 체 문제다.단, 리스트의 크기를 B에 맞춰 설정하면 메모리 초과가 난다. 문제를 읽어보면 "거의 소수"는 소수의 거듭제곱수다.따라서 어떤 소수를 K라고 했을때 K * K 해야하므로 소수 판별은 B의 제곱근까지만 실행하면 된다.(이렇게 해도 메모리 사용량은 110536KB였다...^^) 이 외에는 특별한 로직이 필요없는 문제다.먼저 에라토스테네스의 체 알고리즘대로 소수 판별을 하고, ..
문제https://www.acmicpc.net/problem/6064백준 문제집 - 0x12강 - 수학 알고리즘: 수학, 브루트포스, 정수론풀이최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M과 N보다 작거나 같은 두 개의 자연수 x, y를 가지고 각 년도를 와 같은 형식으로 표현하였다. 그들은 이 세상의 시초에 해당하는 첫 번째 해를 로 표현하고, 두 번째 해를 로 표현하였다. 의 다음 해를 표현한 것을 이라고 하자. 만일 x 은 그들 달력의 마지막 해로서, 이 해에 세상의 종말이 도래한다는 예언이 전해 온다.예를 들어, M = 10 이고 N = 12라고 ..
문제https://www.acmicpc.net/problem/8980백준 문제집 - 0x11강 - 그리디 알고리즘: 그리디, 정렬풀이직선 도로상에 왼쪽부터 오른쪽으로 1번부터 차례대로 번호가 붙여진 마을들이 있다. 마을에 있는 물건을 배송하기 위한 트럭 한 대가 있고, 트럭이 있는 본부는 1번 마을 왼쪽에 있다. 이 트럭은 본부에서 출발하여 1번 마을부터 마지막 마을까지 오른쪽으로 가면서 마을에 있는 물건을 배송한다.각 마을은 배송할 물건들을 박스에 넣어 보내며, 본부에서는 박스를 보내는 마을번호, 박스를 받는 마을번호와 보낼 박스의 개수를 알고 있다. 박스들은 모두 크기가 같다. 트럭에 최대로 실을 수 있는 박스의 개수, 즉 트럭의 용량이 있다. 이 트럭 한대를 이용하여 다음의 조건을 모두 만족하면서 ..
문제https://www.acmicpc.net/problem/1744백준 문제집 - 0x11강 - 그리디 알고리즘: 그리디, 정렬풀이문제길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다.예를 들면, 어떤 수열이 {0, 1, 2, 4, 3, 5}일 때, 그냥 이 수열의 합을 구하면 0+1+2+4+3+5 = 15이다. 하지만, 2와 3을 묶고, 4와 5를 묶게 되면, 0+1+(2*3)+..