문제풀이
숫자 하나에 대응하는 판별을 위해 bool 타입 함수를 만든다. 함수는 단순히 3자리수이고 각자리수의 간격이 같은지 확인하면 되는 단순한 함수이다. 이떄 두자리수는 간격이 하나이기 때문에 한수라고 볼 수 있다. 존재하는 모든 수에 대하여 함수를 수행하며 함수는 각 자리수를 비교하는 수행을 하여 O(n) 복잡도(함수 내부 복잡도 약 O(3) 정수배 관용 )를 가진다.
#include <iostream>
using namespace std;
bool GAB(int A){
int num[3];
if(A < 100) return true; //두자리 수라면 간격이 하나이기때문에 한수이다.
for(int i = 0 ; i < 3 ; i++){
num[i] = A % 10;
A /= 10;
}
if( num[2]-num[1] == num[1]-num[0] )return true;//자리값의 차이를 확인한다.
return false;
}
int main(){
int N;
int ans = 0;
cin >> N;
for(int i =1; i <= N && i < 1000; i++) if(GAB(i))ans++;
//1000인경우는 한수가 아니기 때문에 확인하지 않는다.
cout << ans;
return 0;
}
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 1476번 날짜 계산 (0) | 2023.07.16 |
---|---|
[백준/Python] 1411_비슷한 단어 (0) | 2023.07.16 |
[백준/Python] 2661 좋은수열 (0) | 2023.07.16 |
[백준/C++] 1182번 부분수열의 합 (0) | 2023.07.16 |
[백준/Python] 2057 팩토리얼 분해 (0) | 2023.07.16 |