얼마전 병원진료때문에 4박5일 휴가를 다녀오고 2주간의 격리를 해서 지금에야 다시 알고리즘 공부를 시작한다.. 7월말에 아마 또 다녀와야되지만, 다시 열심히 해보겠다..
우선 오늘 문제는 너무 쉬웠어가지고,,올릴까 말까하다가 격리 후 첫 문제니까 올리겠다..
자연수 N이 주어지면 N번 만큼 num과 sum을 입력받고, 1~num 의 합이 sum과 맞냐, 안맞냐 를 구하는 문제다.
제일 중요한건 1~n 까지의 합을 구하는건데, 사실 이건 고등학교 수학을 조그만 열심히 했고, n(n+1)/2 라는 방정식을 아냐 모르냐에 따라 이 문제가 런타임 에러가 나냐 안나냐가 갈린다.
코드는 다음과 같다.
#include<iostream>
using namespace std;
int main(){
int N, i, num, answ, result;
cin>>N;
for(i=0; i<N; i++){
cin>>num;
cin>>answ;
result = (num)*(num+1)/2;
if(result == answ){
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
}
코드 설명은 너무 쉬워서 생략하겠다.. 그냥 위에서 말했듯이 n(n+1)/2 라는 방정식만 알고있으면 된다.. 이 방정식은 매우 유용하게 다양한곳에서 쓰이니 꼭 알아두자