문제: https://www.acmicpc.net/problem/1065
이 문제는 사실 굉장히 간단한 문제이면서, 동시에 함수를 연습해보기 좋은 문제이다.
문제의 핵심은 간단하다.
99까지는 모든 숫자들이 각 자릿수끼리 등차수열을 이룬다. (비교군이 없기 때문이다.)
1의 자리나 10의 자리까지 구현하려다보면 복잡해질 수 있지만 1-99면 그냥 그 숫자를 리턴하게 만들어준다. (편-----안)
하지만 100, 즉 세자리수부터 각 연속된 자리수끼리 빼준 값들이 같을 때만 counter를 1씩 늘려주면 된다.
이건 진짜 클래스 개념을 쓸 필요 없는데... 그냥 요즘 객체지향에 푹 빠져서 한번 그렇게 만들어보았다.
#include <iostream>
using namespace std;
class One{
private:
const int x;
public:
One(int a): x(a) {}
int Onehandler(); //100의 자리 이상 수의 한수를 count해준다.
int numOne(); //99까지는 그냥 수를 리턴하고 100부터는 Onehandler에 99를 더해 리턴한다.
};
int main(){
int a;
cin>>a;
One Q1(a);
cout<<Q1.numOne();
return 0;
}
int One::Onehandler(){
int counter=0;
for(int i=100; i<=x; i++){
int _00 = i/100;
int _0 = (i-(_00*100))/10;
int _ = i-((_00*100)+(_0*10));
if((_00-_0)==_0-_){
counter+=1;
}
}
return counter;
}
int One::numOne(){
if(x<100){return x;}
else{return 99+Onehandler();}
}
끝!
'Programming > 백준 문제풀이' 카테고리의 다른 글
백준 2798번 _ BlackJack 블랙잭 / Brute Force 브루트포스 (C++) (0) | 2020.02.29 |
---|---|
백준 11729번 _ Hanoi / recursion 재귀 문제 (C++) (0) | 2020.02.29 |
백준 1152번 string _ while문/cin EOF 연습 (C++) (0) | 2020.02.29 |
백준 1002번 터렛 _ C++, python 두가지 풀이. (0) | 2020.02.29 |
백준 2884번 시계 세팅 문제 _ C++, python 두가지 풀이 비교. (0) | 2020.02.27 |