반응형
1. 문제
- [백준 C#] 1065번 한수 (C#) (https://www.acmicpc.net/problem/1065)
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
2. 문제 포인트
- 한수 정의 및 알고리즘
1 = 한수 (숫자가 1개인 등차수열)
11 ~ 99 = 한수 (숫자가 2개이기에 어떤수든 공차가 될 수 있음, 공차 0~9)
100 ~ 999 = 각 자리수간의 공차 계산필요
1000 = 한수 아님 (문제에서 1000까지의 한수 개수를 구해야 하기에 예외 처리 필요) - 숫자 하나 입력 받기
- 한수를 계산하는 함수 만들기
반응형
3. 전체 코드
using System;
namespace S4_01065번
{
internal class Program
{
static void Main(string[] args)
{
// 한수의 개수
int cnt = 0;
int a = int.Parse(Console.ReadLine());
for (int i = 1; i <= a; i++)
{
if (calc_num(i))
{
cnt += 1;
}
}
Console.WriteLine(cnt);
}
private static bool calc_num(int num)
{
// 100보다 작으면 무조건 등차수열이다
if (num < 100)
{
return true;
}
// 문제는 1000이하의 숫자
else if (num < 1000)
{
string str_num = num.ToString();
// 일의 자리 수와 십의 자리수의 차이, 십의 자리수와 백의 자리수의 차이가 같으면 등차수열로 볼 수 있다
if (int.Parse(str_num[2].ToString()) - int.Parse(str_num[1].ToString()) == int.Parse(str_num[1].ToString()) - int.Parse(str_num[0].ToString()))
{
return true;
}
else
{
return false;
}
}
// 1000이 들어온 경우 등차수열되 성립되지 않음으로 무조건 false
else
{
return false;
}
}
}
}
// 1065번 한수
// https://www.acmicpc.net/problem/1065
반응형
'알고리즘 > C#' 카테고리의 다른 글
[백준 C#] 1152번 단어의 개수 (C#) (1) | 2022.09.20 |
---|---|
[백준 C#] 4673번 셀프 넘버 (C#) (0) | 2022.09.20 |
[백준 C#] 10818번 최소, 최대 (C#) (0) | 2022.09.19 |
[백준 C#] 2562번 최댓값 (C#) (0) | 2022.09.19 |
[백준 C#] 8958번 OX 퀴즈 (C#) (0) | 2022.09.18 |