반응형
https://www.acmicpc.net/problem/1065
n이 100보다 작으면 모두 등차수열인 수 인것을 인지.
숫자마다 각 자리수를 빼서 비교하여 등차 수열인지 아닌지 판별해주면됨.
문제풀이
1. 자리수 배열, 자리수 차이 배열 선언
2. 100보다 작은 경우 입력값 N을 출력
3. 100보다 클 경우 각 자리수를 배열에 저장
4. 각 자리수 배열에서 그 다음 인덱스 값을 빼서 자리수 차이 배열에 저장
5. 자리수 차이 배열의 값을 비교하여 한개라도 다르면 false 반환
6. true일 경우 카운트 +1을 해줌
7. 위 방법은 100부터 센것이기 때문에 최종 카운트에 99를 더해주면 답이됨.
전체코드
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
32
33
34
35
36
37
38
39
|
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int n;
int num[5], sub[4]; // 자리수 배열, 자리수 차이 배열
int a, ans, indx;
ans = 0;
cin >> n;
if(n < 100){
cout << n; // 100이하일 경우 모든 수가 등차수열
return 0;
}
for (int i = 100; i <= n; i++){
a = i;
indx = 0;
while(a!=0){
num[indx] = a % 10; // 각 자리수를 저장
a /= 10;
indx++;
}
for (int j = 0; j < indx - 1; j++){
sub[j] = num[j] - num[j + 1]; // 자리수 차를 저장
}
bool isit = true;
for (int j = 0; j < indx - 2;j++){
if(sub[j] != sub[j+1]){
isit = false; // 자리수의 차를 비교하며 다르면 false
break;
}
}
if(isit){ // 자리수의 차가 모두 같은 경우 카운트
ans++;
}
}
cout << ans + 99;
//100보다 큰 경우 카운트를 했으므로 100보다 작은 한수도 더해줌
return 0;
} // 16 min
|
cs |
체감 난이도 | 걸린 시간 | 참고 | 사용 알고리즘 |
중하 | 16min | x | 브루트 포스 (brute force) |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 1541 잃어버린 괄호 c++ [컴공과고씨] (2) | 2022.03.31 |
---|---|
백준 9663 N-Queen C++ [컴공과고씨] (0) | 2022.03.29 |
백준 4673 셀프 넘버 c++ [컴공과고씨] (0) | 2022.03.29 |
백준 2798 블랙잭 c++ [컴공과고씨] (0) | 2022.03.29 |
백준 2309 일곱 난쟁이 c++ [컴공과고씨] (0) | 2022.03.28 |