수학 12

백준 4673번 c++ 풀이

전략: 1. 10001 길이의 배열을 bool타입으로 만들어주고 기본 값을 true로 설정해준다 2. 1부터 10001까지 반복하여 해당 숫자와 각자리수 값을 더한 값의 배열 해당 인덱스를 false로 설정해주고 만약 sum이 10000을 넘어간다면 다음 경우를 실행한다. 3. 배열을 확인하여 true값을 갖고 있는 인덱스를 출력한다. 코드: #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); bool arr[10001]; for(int i= 0; i

BOJ 문제풀이 2021.10.10

백준 2193번 c++ 풀이

전략: 1. 3이상의 N에 대하여 N자리 이친수는 N-1자리 이친수 뒤에 0을 붙이는 것과, N-2자리 이친수 뒤에 01을 붙이는 경우이기 때문에 점화식은 pr(num) = pr(num-1) + pr(num-2)가 된다 코드: #include long long int arr[100]= {0, 1, 1, 2}; long long int pr(int num){ if(arr[num]){ return arr[num]; } arr[num] = pr(num-1) + pr(num-2); return arr[num]; } using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin>>N; cout

BOJ 문제풀이 2021.10.10

백준 1026번 c++ 풀이

안녕하세요 오늘은 수학원리를 이용한 문제를 풀어보겠습니다. 전략: 1. 첫번째 배열을 오름차순으로 정렬하고 두 번째 배열을 내림차순으로 정렬한다. 2. 대응하는 원소를 곱하여 result에 더해준다. 코드: #include using namespace std; int comp(int a, int b){ return a>b; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin>>N; vector in_1(N); vector in_2(N); for(int i = 0; i>in_1[i]; } for(int i = 0; i>in_2[i]; } sort(in_1.begin(), in_1.end()); sort(in_2.begin()..

BOJ 문제풀이 2021.09.19

백준 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