자료구조 및 알고리즘/백준(30)
-
[백준 1929] 소수 구하기
백준 1929번 소수 구하기 링크 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 백준 1978번 소수 찾기 문제에 제출한 코드를 활용해서 소수인 경우를 출력해준다. 정답코드는 #include using namespace std; bool isPrime(int num){ if(numm>>n; for(int i=m; i
2023.04.01 -
[백준 1978] 소수 찾기
백준 1978번 소수 찾기 링크 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 소수를 판별할 수에 루트를 씌운 값이 약수의 중간값보다 살짝 크다는 것을 이용 이러면 시간 복잡도가 루트 n이다. https://myjamong.tistory.com/139 소수(Prime Number) 구하기 효율적 알고리즘 :: 코드자몽 소수(Prime Number) 소수는 자신보다 작은 두개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수이다. ex) 5는 5*1 또는 1*5로 수를 곱합 결과를 적는 유일한 방법이 그 수 자신..
2023.04.01 -
[백준 11050]이항 계수 1
문제 링크) https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 관련 개념) 팩토리얼 재귀/이항계수/DP 재귀를 이용한 팩토리얼 예제) https://blockdmask.tistory.com/321 [C언어/C++] 팩토리얼 재귀, 반복문 구하기 (factorial 함수) 안녕하세요. BlockDMask 입니다.오늘은 재귀와 반복문을 이용한 팩토리얼(factorial) 함수를 구현해 볼것입니다. 1. 팩토리얼이란? (factorial?)2. 반복문을 이용한 팩토리얼 (for-loop factorial)3. 재귀함수를 blo..
2023.04.01 -
[백준 1085] 직사각형 탈출
쉬운 구현 #include using namespace std; int main(void){ ios::sync_with_stdio(0); cin.tie(0); int x,y,w,h; cin>>x>>y>>w>>h; int arr[4]; arr[0]=x; arr[1]=y; arr[2]=w-x; arr[3]=h-y; int min=arr[0]; for(int i=0; iarr[i]) min=arr[i]; } cout
2023.04.01 -
[백준 24444] 알고리즘 수업 - 너비 우선 탐색 1
나의 구린 구현력 https://armembedded.tistory.com/91 [백준 24479] 알고리즘 수업 - 깊이 우선 탐색 1 백준 문제 참고 링크 공유 소스 보기 (acmicpc.net) 공유 소스 보기 www.acmicpc.net 수도 코드(pseudo-code) : 의사 코드 dfs(V, E, R) { # V : 정점 집합, E : 간선 집합, R : 시작 정점 visited[R] armembedded.tistory.com 이거보고 E는 adj라고 눈치채고 풀었지만 -- 그러니까 인접리스트 adj는 E 구현은 요것밖에 안 했다. 수도 코드가 다음과 같은데 한 구현은 #include #include #include #include #define fio ios_base::sync_with_s..
2023.03.31 -
[백준 1926] 그림 문제 복습 (실수 최종 수정)
공백으로 숫자를 받아서 2차원 배열 board의 각 요소의 값을 정하는 방법 // board 입력 받는 방식1 - 모르는 부분 check for(int i=0; i> board[i][j]; 그리고 pop한 만큼 area++ 해서 넓이를 늘려줘야 되는데, for(int dir=0; dir= n || ny = m) continue; if (vis[nx][ny] || board[nx][ny] != 1) continue; vis[nx][ny] = 1; Q.push({ nx, ny }); } } mx = max(area, mx); } 그래서 전체 코드는 #include #include #include using namespace std; #define X first #define Y secon..
2023.03.31