일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 다이내믹 프로그래밍
- react
- 깊이 우선 탐색
- 1620
- mermaid js
- BOJ
- codeSyntaxHighlight
- js
- javascript
- n^2 배열 자르기
- Git Convention
- 2018 KAKAO BLIND RECRUITMENT
- 이분탐색
- 없는 숫자 더하기
- Hasing
- 주식 가격
- 위클리 챌린지
- 소수 체크
- 옵셔널 체이닝 연산자
- 5525
- 숫자 문자열과 영단어
- 브루트포스 알고리즘
- C++
- colorSyntax
- 정수 삼각형
- 프로그래머스
- 10162
- 18111
- 4796
- 구간 합 구하기 4
- Today
- Total
목록Algorithm/BOJ (49)
개발하는 kim-hasa
https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 특정 N의 N!을 구했을때, 뒤에서부터 0이 아닌 숫자가 나올때까지의 0의 개수를 구하는 문제다. 쉽게 생각하면 10이 몇번 생성되느냐 인데, 2는 2번마다 나오니까 5가 몇번 나오는지만 구하면된다. 25와 125에는 5가 각각 2번 3번 들어가있으므로, 한번씩 더 구해준다. #include using namespace std; int main(){ int k; cin >> k; int f1 = k / 5; int f2 = k / 25; int f3 = k / 125; cout
https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 특정 수에 대해서 재귀문을 돌렸을 때 0과 1이 출력되는 횟수를 구하는 문제입니다. 직접 재귀를 하기보다는 배열을 선언해서 미리 만들어두고, 특정 인덱스의 값을 구했습니다. #include #include #include #include using namespace std; int zcount[100] = {0}; int ocount[100] = {0}; int main() { int k; cin >> k; for(int i=0; i m; cout
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 숫자카드 1번과 같지만 중복으로 들어온다는 문제가 있었습니다. 그냥 무식하게 배열에 때려넣고 풀긴 했는데 ,,, 다른 풀이를 많이 찾아봐야겠습니다. #include #include #include using namespace std; int plusarr[10000001] = {0}; int minusarr[10000001] = {0}; int main(){ io..
https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 문자열이 들어오면 문자에 숫자를 부여해서 자리마다 차례대로 31의 거듭제곱을 곱하는 문제입니다. 하지만 큰 문제가 있는데, 바로 자리수가 너무 커진다는 것입니다. 예를 들어 50자리 문자라면 마지막 문자에는 31의 49제곱이 곱해지는 문제가 있습니다. 그래서 중간중간에 나머지로 나누어주는 코드를 넣어서 범위가 벗어나지 않게 합니다. #include #include using namespace s..
https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 프린터에 문서가 들어오지만, 우선순위가 높은것부터 차례대로 출력합니다. 우선순위 큐를 썼으면 간단하지만,, 일단은 벡터와 큐를 이용해서 풀었습니다. 테스트케이스 , 문서 등등 필요한것들을 받아와서 벡터와 큐에 저장합니다. 그리고 벡터를 정렬하고, 뒤에서부터 벡터의 큰 값부터 큐의 맨 앞과 비교합니다. 만약 같다면 숫자를 제거하고 뒤에는 0을 넣습니다. 이때, 원하는 값이라면 그대로 출력하고 종료합니다..
https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 1부터 n 까지의 수로 스택에 넣고 빼면서 배열을 만들 때, 만들 수 있는 경우와 만들 수 없는 경우를 구분하는 문제입니다. 숫자를 입력 받고, index가 더 작다면 숫자가 될 때 까지 스택에 추가합니다. 그 후 같은 경우 제거합니다. 하지만 같지 않은 경우, 즉 만들어질 수 없는 배열이라면 no를 리턴합니다. #..
https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 첫 줄에 자연수가 들어오고, 그 다음에 다시 한번 수가 들어와서 있으면 1을 없으면 0을 리턴하는 문제입니다. 처음으로 이진탐색을 직접 풀어보았는데 리턴값을 그냥 주는 방법으로 풀었습니다. #include #include #include using namespace std; vector arr1; int binary(int first, int las..
https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 올바르게 괄호가 쳐져있는지 계산하는 문제입니다. 가장 먼저 문자열을 받아오는데, 문자열에서 ( 또는 [ 가 있는 경우에 스택에 넣습니다. 이후 ) 또는 ] 를 만나면 스택을 검사해서 가장 위에 있는 글자가 올바른 괄호를 이룬다면, 스택에서 제거합니다. 만약 올바르지 않다면, no 를 리턴합니다. 끝까지 계산 후, 스택이 비어있다면 yes를 그렇지 않다면 no를 리턴합니다. #incl..
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 사람들이 원으로 돌아 앉은 후 순서대로 빠져나가는 순서를 구하는 문제입니다. 가장 먼저 queue를 구성합니다. 그리고 순서에 따라서 한명씩 앞에서 빼서 뒤로 보냅니다. 만약 요세푸스 수에 맞았다면, 큐 뒤에 넣지 않고 바로 출력합니다. 1명 남을때까지 반복 후, 마지막 인원을 출력합니다. #include #include using namespace std; int main(){ int n; cin >> n; // 숫자를 받을 갯수 int k; // 반복할 숫자 queue yose..