본문 바로가기

백준128

[백준 15649/c++] N과 M (1) 백트래킹을 사용하여 푸는 첫 문제이다 백트래킹이란 이전 결과를 보존하고 그 이전 결과를 기반으로 재귀를 사용하여 경우의 수를 찾는 방법이다 백트래킹은 브루트 포스 = 완전 탐색 과는 조금 다른데, 브루트 포스의 경우 개별적인 경우를 반복문을 통해 모든 경우를 구한다면 백트래킹은 이전 결과를 기반으로 재귀를 통해 가지치기 하여 경우의 수를 찾는 방법이다 n과 m을 전역 변수로 주어 백트래킹 함수의 인자를 줄였고, 아직 초보라 백트래킹의 패턴을 따라 만들어서 다른 블로그 답들과 비슷한 코드가 나왔다 아직 사용에 익숙하지 않으니 더 많이 풀고 이해하여 내 것으로 만들자 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열.. 2022. 7. 31.
[백준 1929/c++] 소수 구하기 에라토스테네스의 체를 최소한의 범위로 설정해서 시간초과가 되지 않도록 구하는 문제이다 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cout.tie(NULL); int m, n; bool ar[1000004]; cin >> m >> n; for (int i = 2 ; i 2022. 7. 30.
[백준 11399/c++] ATM 총 시간이 최소일때의 시간이 되려면 앞에는 작은 수를, 뒤로 갈수록 큰수를 두어 오름차순 정렬시키면 된다 주어진 시간들을 배열이나 벡터에 넣고(배열이 더 빠르다) sort 로 오름차순 정렬 후 for 문으로 개수를 추가해 돌면서 누적 합을 구해주면 되는 문제였다 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net #include using namespace std; int main(){ int n; int num; int sum = 0; int ar[1004]; cin >> n.. 2022. 7. 29.
[백준 1436/c++] 영화감독 숌 원하는 번째일때의 수이니 번째를 cnt 카운트해서 입력한 n 과 같을때까지 내부의 수 ans를 ++ 하고 ans를 temp로 복사하여 temp의 %1000 일때의 값(1000으로 나눴을때의 나머지)가 666이면 cnt를 ++ 아닐 경우에도 마지막 자리수에 666이 아니라 중간자리수에 666이 있을 수 있으므로 10으로 나누어 한자리씩 내려당겨준어 그걸 다시 666이 있나 비교하여 있으면 cnt++ 없으면 10으로 나누는것을 반복, temp가 나누다가 0이되면 반복 탈출하여 cnt ==n 될때까지 ans 값을 올려주면 되는 문제이다 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이.. 2022. 7. 28.