프로그래밍 언어/C#
두 수 사이의 합을 구하라!
wh011202
2024. 11. 27. 15:38
다수의 입력을 받아 횟수만큼 반복하는 기능 제작
- 사용자로부터 정수 두 개를 입력 받고 입력한 값을 포함, 그 사이에 있는 모든 정수의 합을 구하는 프로그램. <br> 예를 들어 유저가 4와 7을 입력하였다면 4+5+6+7의 결과값인 22를 출력해야 한다
- "두 수 사이의 합을 구합니다. 시작할 작은 수를 입력하여주세요" 출력
- 시작할 수 입력 받기
- "끝 수를 입력해주세요" 출력
- 마지막 수 입력 받기
- 반복문을 통하여 시작부터 끝 수까지 합을 임의의 변수에 저장
- 반복문이 끝난 후 "n1과 n2 사이 숫자의 합은 n3입니다" 출력
int num1 = 0;
int num2 = 0;
int sum = 0;
Console.WriteLine("두 수 사이의 합을 구합니다. 시작할 작은 수를 입력해주세요 ");
num1 = int.Parse(Console.ReadLine());
Console.WriteLine("끝 수를 입력해주세요");
num2 = int.Parse(Console.ReadLine());
for (int i = num1; i <= num2; i++)
{
sum += i;
}
Console.WriteLine($"{num1}과 {num2} 사이 숫자의 합은 {sum} 입니다.");
4 + 5 = 9
9 + 6 = 15
15 + 7 = 22
즉 정답! 정상적으로 잘나온다.
음 강사님은 앞을 작은숫자부터 받게 작은수를 입력해주세요 라고 해주셨으나,우리 청개구리같은 유저들은 그럴일이 거의 없을테니 한번 어떤수가 와도 앞과 뒤를 합칠수있는 코드를 짜보자
int num1 = 0;
int num2 = 0;
int sum = 0;
int add = 1;
int startNum = 0;
int endNum = 0;
Console.WriteLine("두 수 사이의 합을 구합니다. 시작할 수를 입력해주세요 ");
num1 = int.Parse(Console.ReadLine());
Console.WriteLine("끝 수를 입력해주세요");
num2 = int.Parse(Console.ReadLine());
startNum = num1;
endNum = num2;
if (startNum > endNum)
{
add = add * -1;
}
bool eqNum = false;
int temp = 0;
int index = 0;
while(eqNum == false)
{
temp = startNum + (index * add);
sum += temp;
index++;
if(endNum == temp)
{
eqNum = true;
}
}
Console.WriteLine($"{num1}과 {num2} 사이 숫자의 합은 {sum} 입니다.");
의외로 변경할게 너무많았다.
우선 for문으로 할라니 코드가 뭔가 좀 더러워져서 깔끔하게 포기하고 while문으로 시작!
기존의 코드랑 거의 모든부분이 다르지만, 실행이 끝나는 부분이 끝값을 목표치로 정하고, 계속해서 증감을 더해줘야하는 숫자를 찾아서 목표값이랑 같을때 반복문이 끝나게 만들었다.
솔직히 순식간에 해결할줄알았는데 로직만 조금 바꿨다고 이렇게까지 오래걸릴줄은 정말몰랐다.. 5분정도면 충분할줄알았건만... 아무튼 재밌었으니 됬다.
임의의 횟수만큼 for문 돌리는 문제를 풀었더니, 이번엔 그 응용문제를 가져와준 강사님! 재밌었습니다!
이번엔 i를 초기화 해주는 부분도 임의의 숫자로 넣어서 해결했다.
생각해보면 for문을 배울때
for (초기화, 조건, 증감)
{
실행;
}
이렇게 배웠으나 안의 값을 항상 ~값을 넣어라 같은건 없었다..
꽤나 다양하게 쓸수있을거같으니 재밌을거같다.