목록C++ (4)
혜지와 콩나무

최대공약수 구하는 방법=> 유클리드 호제법을 사용 유클리드 호제법?두 수 a, b의 최대공약수는 b와 a % b의 최대공약수와 같다.즉, GCD(a, b) == GCD(b, a % b) 이거를 b == 0이 될 때까지 반복하면, 최종적으로 남은 a가 최대공약수이다. 잘 모르는 분은 여기에서 공부하세여https://wikidocs.net/205459 05. 유클리드 호제법[TOC] 수학 공식을 직접 코드로 바꾸는 알고리즘 문제는 잘 나오지는 않지만 가끔 필요할 때가 있습니다. 이럴 때 사용하기 위해서라도 기억을 꼭 해야 합니다. 대표적인 문제가…wikidocs.net 이 내용을 토대로 아래와 같이 구현했다.int GreatestD(int a, int b) { while (b != 0) { ..

1978번문제 요약: 주어진 수들 중에서 소수가 몇 개인지 판별 =>소수 구하는 함수를 만들어서 해결 소수의 정의를 활용해서 숫자 하나하나가 소수인지 판단.1은 소수가 아님. #include using namespace std;bool isSoSu(int n) { //소수의 특징? //1과 자기 자신만을 약수로 가짐. //2 ~ num전까지 수로 다 나눠보고, 나머지가 0이면, false //나머지가 계속 있으면, true if (n > N; int arr[100] = {}; for (int i = 0; i > arr[i]; } int num = 0; for (int i = 0; i 1929번문제 요약: M 이상 N 이하의 모든 소수를 출력 =>위에 문제랑 같은 함수를 썼더니, 시간 초과가 나왔다..
#include #include #include // memset 사용using namespace std;int tmap[50][50]; // 보물 지도int visited[50][50]; // 방문 체크int row, col; // 행(row)과 열(col)// 상하좌우 이동int dy[4] = { -1, 0, 1, 0 };int dx[4] = { 0, 1, 0, -1 };// BFS 함수 (시작점 y, x에서 최장 거리 찾기)int bfs(int y, int x) { memset(visited, 0, sizeof(visited)); // 방문 배열 초기화 visited[y][x] = 1; // 시작점 방문 queue> q; q.push({ y, x }); int max..
#include #include #include using namespace std;int n;int colormap[100][100];int visitedcan[100][100]; // 적록색약 아닌 사람int visitedcant[100][100]; // 적록색약인 사람int dx[4] = { 0, 0, 1, -1 };int dy[4] = { 1, -1, 0, 0 };// 적록색약 아닌 사람의 탐색void bfsCan(int x, int y) { queue> q; visitedcan[x][y] = 1; q.push({ x, y }); while (!q.empty()) { int cx = q.front().first; int cy = q.front().se..