1번 문제   

 

 

    내가 풀이한 답   

#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int n, m, sum = 0;
cin >> n >> m;
int temp = m;
for(int i=0; i<n/m; i++) {
sum += temp;
temp = temp + m;
}
cout << sum << endl;
return 0;
}

 

 처음에는 자연수 N의 개수만큼 순회(for)를 돌고 조건문(if)을 사용해 M으로 나누어서 0이되는 숫자를 찾아 Sum 변수에 더해줄 생각을 하였지만 너무 불필요하게 순회를 돈다고 생각했다.

 

 하지만, 어차피 배수만 더해주면 되는 조건이라고 생각을 해서 N을 M으로 나눈 개수만큼만 돌고 순회를 도는 동안 m을 계속 더한 값을 저장해주는 temp 변수를 설정해서 sum 변수에 더하는 것을 생각해보았다. 

 

 결과는 통과

 

 

    사이트의 답안   

#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int n, m, sum = 0;
cin >> c >> n >> m;
for (int i=1; i<=n; i++) {
if(i%m==0) {
sum=sum+i;
}
}
cout << sum << endl;
return 0;
}

 

 처음에 생각했던 것과 똑같은 답이였다. 오늘은 쉬운 문제를 풀어봤는데 C++이 좀 오랜만이기도 해서 낯설었다. Time Limit이 1초 이내라는데 지금 단계에서는 체감이 느껴지지 않는다. 실행 시간 체크와 메모리 누수 체크는 기초 다지기 이후로 알고리즘을 어느정도 복습한 뒤에 해야겠다...

'알고리즘 & 자료구조 > 기초 다잡기' 카테고리의 다른 글

6. 숫자만 추출  (0) 2020.09.01
5. 나이 계산  (0) 2020.09.01
4. 나이 차이  (0) 2020.09.01
3. 진약수의 합  (0) 2020.09.01
2. A부터 B까지의 자연수의 합  (0) 2020.09.01