250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 파일구조
- injection
- ReflectedXSS
- 코드업
- 기계학습
- 암호학
- SQL
- 프로그래머스
- 공개키
- RSA
- SQL_Injection
- StoredXSS
- 인공지능
- XSS
- 디피헬먼
- 보안
- ImageBase
- db
- 웹
- 알고리즘
- dsa
- RVA
- dvwa
- Database
- codeup
- Cross Site Scripting
- 심층학습
- 머신러닝
- C언어
- 딥러닝
Archives
- Today
- Total
Ye0ngJae
[BOJ] 10872번 "한수" C언어 풀이 본문
728x90
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
입력 예시
110
1
210
출력 예시
99
1
105
답안
더보기
코드
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
int arr[3];
int input, k, n, count;
scanf("%d", &input);
for (int i = 1; i <= input; i++) {
if (i < 100)
count = i;
else if (i == 1000)
break;
else {
k = 0; n = i;
while (n > 0) {
arr[k] = n % 10;
n /= 10;
k++;
}
if (arr[0] - arr[1] == arr[1] - arr[2])
count++;
}
}
printf("%d", count);
return 0;
}
풀이
한수는 각 자리수들이 등차수열을 이루는 수이다. 예를 들어 543이라는 숫자를 보자 543은 5 4 3 이라는 숫자로 나누어 볼 때 이 숫자들은 1이라는 차 일정한 차를 이루고 있다. 우리는 이를 한수라고 부른다. 한수는 100 이하의 경우에는 받은 값 그대로가 한수이기 때문에, 100이하의 경우 해당 값을 그대로 출력한다.
=> 2자리 수까지는 입력 받은 값이 한수이다.
일단 input 변수를 이용하여 자연수 N을 입력받고, for문을 돌며, 1부터 N까지 반복하면서 while 문을 통해 arr 배열에 n을 10으로 나눈 나머지를 저장하고 n을 10으로 나눈다. 그리고 이 수들을 arr 배열에 저장하여 각 자리수가 등차수열을 이루는 지 확인하고 등차수열이 맞으면, count++을 한다.
for문을 모두 둘았으면 count 변수를 출력하여,1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
728x90
'알고리즘 > C언어' 카테고리의 다른 글
[BOJ] 14467번 "소가 길을 건너간 이유1" C언어 풀이 (0) | 2022.04.14 |
---|---|
[BOJ] 21966번 "(중략)" C언어 풀이 (0) | 2022.04.14 |
[BOJ] 10872번 "팩토리얼" C언어 풀이 (0) | 2022.04.14 |
[CodeUp] 1916번 "피보나치 수열 (Large)" C언어 풀이 (0) | 2022.04.13 |
[CodeUp] 1566번 "함수로 거듭제곱 리턴하기" C언어 풀이 (0) | 2022.04.12 |