일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LIS #가장긴증가하는부분수열 #
- 20117
- 백준 #다익스트라 #dijkstra #9370 #c++
- 줄어드는수
- N번째큰수
- 30870
- C++
- 백준
- 22869
- graph
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- 16202
- 호반우 상인
- boj #백준
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- graph #최단경로
- 3343
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- 1174
- c++ #boj #
- hcpc
- 투포인터 #백준 #boj #20922 #22862
- 사이클 없는 그래프
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- 레드아보
- 쌤쌤쌤
- 이분탐색 #dp #11053
- 코딩
- backtracking #codetree #디버깅 #삼성코테
- BOJ
- Today
- Total
hyunjin
[1065]한수 본문
https://www.acmicpc.net/problem/1065
문제
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
<풀이>
전략
일단 99이하 수는 무조건 한수
각 자리 나누고
어떤 함수를 만들까->고민되네 그냥 함수로 하나로 끝내나
그냥 입력된 수(n) 인자로 넘기면
1~n까지 한수인지 count
한수 판별
2개 함수 필요
아니면 한수 판별만 두고 for문 자체를 main에 그냥 넣는 방법도 있다.
<코드>
#define _CRT_SECURE_NO_WARNINGS
#include
#include
typedef unsigned char Bool;
#define True 1
#define False 0
Bool isHanNum(int);
int countHanNum(int);
int main(void) {
int number;
scanf("%d", &number);
if (number < 100)
printf("%d", number);
else
printf("%d", countHanNum(number));
return 0;
}
Bool isHanNum(int num) {
Bool flag=False;
int commonDiff[2],number[4];
for (int i = 0; num;i++) {//자리수 분리해서 넣어놓기
number[i] = num % 10;
num /= 10;
if (i >=2) {//공차 구하기
commonDiff[0] = number[i - 1] - number[i - 2];
commonDiff[1] = number[i] - number[i - 1];
if (commonDiff[0] != commonDiff[1]) break;
else flag = True;
}
}
return flag;
}
int countHanNum(int num) {
int count = 99;
for (int i = 100; i <= num;i++) {
if (isHanNum(i)) count++;
}
return count;
}
<C에서 bool type은???>
c언어에서는 true,false 자료형이 없다.
그래서 그냥 int 0,1로 하던지
아니면!
먼저 Bool 타입을 만들어 낼것이다.
typedef로!
unsigned char은??
부호 없는 char형! -> char 1byte 최대 256이니까 우린 0,1만 필요하므로 괜찮다
또는!!! typedef말고
#define Bool unsigned char로 해도 같은 결과!
'알고리즘 연습 > 백준' 카테고리의 다른 글
[2748] 피보나치수2 (0) | 2020.08.05 |
---|---|
[1149]RGB거리 (0) | 2019.09.22 |
[11721]열 개씩 끊어 출력하기 (0) | 2019.05.16 |
[11720]숫자의 합 -> 실패 (0) | 2019.05.16 |
[2441]별찍기4 (0) | 2019.05.15 |