새벽을 밝히는 붉은 달
[C] 백준 1065번: bool은 stdbool.h에! 본문
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
예전에 풀려고 했다가 포기하고, 이번에 다시 도전한 문제이다.
등차수열은 고등학교 때 배우기도 했고,
애초에 등차수열이란 개념 자체는 초등학생 때 규칙 찾기에서 배우기 때문에 어렵지 않았다.
다만, bool값을 사용하고 싶었는데, java에서는 boolean이라는 자료형으로 선언하면
바로 사용을 할 수 있기 때문에 C도 그렇겠지, 하고 bool cp; 라고 선언을 했는데
컴파일이 안 되는 것이다.
왜 그런가- 했더니 C에서 bool자료형은 stdbool.h 헤더를 선언해야 사용할 수 있다고 한다.
헤더를 추가했더니, 문제 없이 컴파일 되었고, 성공적으로 문제를 풀었다😊
아래는 내가 구현한 코드👇
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void AP(int num)
{
int cnt = 0;
if (num < 100) cnt = num;
else {
cnt = 99;
for (int i = 100; i <= num; i++) {
int n1, n2, r, temp = i;
bool cp = true;
n1 = temp % 10;
temp /= 10;
n2 = temp % 10;
r = n1 - n2;
while (temp/10 != 0) {
n1 = n2;
temp /= 10;
n2 = temp % 10;
if (r != (n1 - n2)) {
cp = false;
break;
}
}
if (cp) {
cnt++;
}
}
}
printf("%d\n", cnt);
}
int main(void)
{
int n;
scanf("%d", &n);
AP(n);
return 0;
}
✍새로 안 사실들
1. C에서 bool 자료형은 <stdbool.h> 헤더를 선언해야 사용할 수 있다.
'Online Judge' 카테고리의 다른 글
[C] 백준 1920번: 나의 첫 퀵 소트와 이진 탐색 (0) | 2020.09.07 |
---|---|
[C/Python] 백준 1914번: C로 Big Integer 구현하기 (5) | 2020.09.06 |
[C] 백준 4673번: 런타임 에러는 언제 발생하는가? (0) | 2020.09.04 |
[C] 백준 18258번: 큐 개념을 다시 되새긴 문제 (0) | 2020.09.03 |
[C] 백준 1371번: 입력에 대해 공부한 문제 (0) | 2020.09.02 |
Comments