반응형
https://www.acmicpc.net/problem/1065
- 문제
해설
if (n >= 99) ans = 99;
else ans = n;
3자리수 미만인 수 즉 1부터 99까지는 모두 한수이므로
수가 99이상일 경우 한수의 최소 개수는 99,
수가 99보다 작을 경우 한수의 개수는 그 수가 된다.
한수인 지 체크하는 함수 bool check(int n)을 작성하였다.
세 자리 수부터 들어오므로 백의 자리 수, 십의 자리 수, 일의 자리 수를 각각 구하여 공차가 같은 지 확인하고,
만약 공차가 같다면 true, 아니라면 false를 반환시켰다.
100부터 입력된 수까지 반복문을 돌려 check함수를 통해 true일 경우 ans의 개수를 증가시켰다.
코드
c
#include <stdio.h>
bool check(int n) {
int hun = n / 100;
int ten = n / 10 % 10;
int one = n % 10;
if (hun - ten == ten - one) return true;
return false;
}
int main() {
int n;
int ans;
scanf("%d", &n);
// 1~99는 모두 한수이다.
if (n >= 99) ans = 99;
else ans = n;
for (int i = 100; i <= n; i++) {
if (check(i)) ans++;
}
printf("%d", ans);
return 0;
}
c++
#include <iostream>
using namespace std;
bool check(int n) {
int hun = n / 100;
int ten = n / 10 % 10;
int one = n % 10;
if (hun - ten == ten - one) return true;
return false;
}
int main() {
int n;
int ans;
cin >> n;
// 1~99는 모두 한수이다.
if (n >= 99) ans = 99;
else ans = n;
for (int i = 100; i <= n; i++) {
if (check(i)) ans++;
}
cout << ans;
return 0;
}
반응형
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[BOJ/백준] 11720번 숫자의 합 - [c/c++] 풀이 (0) | 2022.10.14 |
---|---|
[BOJ/백준] 11654번 아스키 코드 - [c/c++] 풀이 (0) | 2022.10.14 |
[BOJ/백준] 4673번 셀프 넘버 - [c/c++] 풀이 (0) | 2022.10.13 |
[BOJ/백준] 15596번 정수 N개의 합 - [c/c++] 풀이 (0) | 2022.10.13 |
[BOJ/백준] 4344번 평균은 넘겠지 - [c/c++] 풀이 (0) | 2022.10.12 |
댓글