알고리즘 78

백준 1003번 c++ 풀이

안녕하세요 오늘은 다이나믹 프로그래밍 알고리즘을 이용한 문제를 풀어보겠습니다. 0 반환횟수를 저장하는 배열 f_0과 1 반환횟수를 원소로 하는 배열 f_1을 만들었고, fibo_0, fibo_1 함수도 만들었습니다. 코드: #include using namespace std; int f_0[45]; int f_1[45]; int fibo_0(int n); int fibo_1(int n); int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); for(int i = 2; i>T; for(int i= 0; i>x; if(x>=2){ cout

BOJ 문제풀이 2021.08.01

백준 4153번 c++ 풀이

안녕하세요 오늘은 단순 수학문제를 풀어보겠습니다. 계획은 우선 세 점을 입력 받아서 정렬하고, 피타고라스의 정리를 이용하여 직각삼각형 판별을 해볼 겁니다. 코드: #include #include using namespace std; int main(){ while(1){ vector v(3); int x, y, z; cin>>x>>y>>z; if(x==0) exit(0); v.at(0) = x; v.at(1) = y; v.at(2) = z; sort(v.begin(), v.end()); x = v.at(0), y = v.at(1), z = v.at(2); if(pow(x,2) + pow(y,2) == pow(z,2)){ cout

BOJ 문제풀이 2021.08.01

백준 3009번 c++ 풀이

안녕하세요 오늘은 좌표 관련된 수학 문제를 풀겠습니다. 이 문제는 국민대학교 알고리즘 대회 예제 문제와 매우 유사한데요, 이 문제는 단순합니다. 네번째점의 x좌표는 나머지 세 점의 x좌표중 하나밖에 없는 것을 선택하면 되고, y도 마찬가지입니다. 코드: #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int arr_x[3]; int arr_y[3]; for(int i = 0; i>arr_x[i]>>arr_y[i]; } int x, y; if(arr_x[0] == arr_x[2]){ x = arr_x[1]; } else{ x = arr_x[2] + arr_x[0] - arr_x[1]; } i..

BOJ 문제풀이 2021.08.01

백준 1085번 c++ 풀이

안녕하세요 오늘은 단계별로 풀어보기 수학 카테고리에 있는 문제를 풀어보겠습니다. 범위를 보시면 아시겠지만 한수(x,y)는 직사각형 안에 위치한다는 것을 알 수 있습니다. 그러므로 직사각형 각 변까지의 거리중 최솟값을 출력해주면 됩니다. 코드: #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int min; int x, y, w, h; cin>>x>>y>>w>>h; min = x; if(min>w-x) min = w-x; if(min>y) min =y; if(min>h-y) min = h-y; cout

BOJ 문제풀이 2021.08.01

백준 9020 c++ 풀이

안녕하세요 오늘은 에라토스테네스의 체를 이용한 소수판정 문제를 풀어보겠습니다. 이러한 소수 판정문제는 bool array를 이용하여 에라토스테네스의 체를 구현해주시면 쉽게 풀립니다. 하단 코드를 참고하시길 바랍니다. #include using namespace std; bool era[9999]; int main(){ for(int i = 1; in; int l = n/2, r= n/2; while(1){ if(era[l] == true and era[r] == true){ break; } l--; r++; } cout

BOJ 문제풀이 2021.07.31

백준 4948 c++ 풀이

안녕하세요 오늘은 에라토스테네스의 체를 이용한 소수 판정 문제를 풀어보겠습니다. 이 문제는 bool array를 이용하여 에라토스테네스의 체를 구현해주시면 어려움이 없습니다. 하단 코드를 참고하세요. #include #include using namespace std; vector v; bool era[246914]; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); for(int k = 0; k>x; if(x==0) break; v.push_back(x); v_size++; } for(int i = 2; i

BOJ 문제풀이 2021.07.31