문제 링크

 

 

반복문 1개로 푼 코드가 있다. 숫자 제한이 작아서 완전 제곱수를 찾아가며 개수를 셌다. 

"맞았습니다" 코드링크1

 

#include <bits/stdc++.h>
using namespace std;

int m, n, i = 1, cnt;
vector<int> v;

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);

  cin >> m >> n;

  while(i * i <= n){
    if(i*i >= m) {
      cnt++; v.push_back(i*i);
    }
    i++;
  }
  if(v.size()==0) cout << -1;
  else cout << accumulate(v.begin(), v.end(), 0) << '\n' << v[0];

  return 0;
}

두 번째는 완전 제곱수를 미리 찾아두고 시작한 코드다. 

"맞았습니다" 코드 링크2 

#include <bits/stdc++.h>
using namespace std;

int m, n, total_sum;
int minnum= 1e9;
int arr[100001];

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);

  cin >> m >> n;
  int num = 1;
  while(num * num <= n){
    arr[num * num] = 1;
    num++;
  }

  for(int i = m; i <= n; i++){
    if(arr[i]) {
      total_sum += i;
      minnum = min(minnum, i);
    }
  }
  if(total_sum == 0) cout << -1;
  else cout << total_sum << '\n' << minnum;

  return 0;
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

뱀과 사다리 게임 백준 16928번 c++  (0) 2022.03.02
조합 백준 2407번 c++  (0) 2022.03.02
30 백준 10610번 c++  (0) 2022.02.28
분수찾기 백준 1193번 c++  (0) 2022.02.25
잃어버린 괄호 백준 1541번 c++  (0) 2022.02.24

+ Recent posts