반응형
[ 문제 ]
M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64, 81, 100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다.
[ 코드 ]
1. 내 코드
i가 완전제곱수인 수를 리스트에 넣고 합과 최솟값을 구한다.
using System.Text;
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
StringBuilder sb = new StringBuilder();
int m = int.Parse(sr.ReadLine());
int n = int.Parse(sr.ReadLine());
List<int> myList = new List<int>();
for (int i = m; i <= n; i++)
{
int sqrt = (int)Math.Sqrt(i);
if (sqrt * sqrt == i)
{
myList.Add(i);
}
}
if (myList.Count > 0)
{
int result1 = myList.Sum();
int result2 = myList.First();
sb.Append($"{result1}\n{result2}");
}
else
{
sb.Append("-1");
}
sw.Write(sb);
sw.Flush();
sw.Close();
sr.Close();
2. 다른 사람 코드
int m = (int)Math.Ceiling(Math.Sqrt(double.Parse(Console.ReadLine())));
int n = int.Parse(Console.ReadLine());
int sum = 0;
int min = m * m;
if (min <= n)
{
int pow = min;
while (pow <= n)
{
sum += pow;
pow = ++m * m;
}
Console.WriteLine(sum);
Console.Write(min);
}
else
Console.Write(-1);
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/1977
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 1964번 오각형, 오각형, 오각형… (0) | 2024.03.02 |
---|---|
[C#] 백준 1225번 이상한 곱셈 (2) | 2024.03.01 |
[C#] 백준 1252번 이진수 덧셈 (1) | 2024.02.29 |
[C#] 백준 1373번 2진수 8진수 (0) | 2024.02.28 |
[C#] 백준 1212번 8진수 2진수 (0) | 2024.02.28 |