[BOJ] 1977 완전제곱수

GirlFriend-Yerin·2020년 8월 27일
0

알고리즘

목록 보기
109/131

Note

M ~ N 사이에 존재하는 완전 제곱수를 찾아 수의 합과 최소값을 출력하자.

완전제곱수의 개념만 알면 쉽다. 최적화도 가능하지만 최대 범위가 100 이기 때문에 1부터 진행하자.
1부터 제곱 했을때 M ~ N 사이에 있다면 합에 더하고 최소값을 갱신한다.

알고리즘

  1. M, N을 입력 받는다.
  2. 1부터 100까지 반복한다.
    1. 현재 수를 제곱 했을 때 M ~ N 범위안에 포함되는지 확인한다.
    2. 포함이 된다면 최소값인지 판별한 후 갱신한다.
    3. 포함 된다면 합에 더한다.
  3. 2를 통해 구해진 값이 없다면 -1을 출력한다. 존재 한다면 합과 최솟값을 출력한다.

소스코드

#include <iostream>

using namespace std;

int main()
{
	int m, n;
	int resMax = 0, res = -1;

	cin >> m >> n;

	for (int i = 1; i <= 100; i++)
	{
		int pow = i * i;

		if (pow < m)
			continue;

		if (res == -1)
			res = pow;

		if (pow > n)
			break;

		resMax += pow;
	}

	if (resMax == 0)
		cout << -1;
	else
		cout << resMax << '\n' << res;


	return 0;
}

2019-04-01 00:42:20에 Tistory에서 작성되었습니다.

profile
개발할때 가장 행복한 개발자입니다.

0개의 댓글