ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] 자릿수에 따라 다르게 처리하기
    Programming Language/C++ 2021. 11. 26. 00:44

    프로그램을 구현하다보면 주어지는 값의 자릿수에 따라서 다르게 처리를 해야하는 경우가 많다.

    이를 처리할 수 있는 방법은 여러 가지가 있을 텐데, 찾는 대로 정리해보도록 하겠다.

     

    1. 조건문으로 자릿수 나누기

    주어진 값의 크기가 작다면, 단순하게 조건문으로 10, 100, 1000, .... 등 자릿수 별로 케이스를 나누어 구현한다.

    예제) 백준 1065번 - 한수

    #include <iostream>
    using namespace std;
    
    int func(int n){
        int cnt=0;
        for(int i=1; i<=n; i++){
            if(i < 10){
                cnt++;
            }
            else if(i<100){
                cnt++;
            }
            else if(i<1000){
                if((i/100 - i%100/10) == (i%100/10 - i%10)) cnt++;
            }
            else{ // i==1000
                
            }
        }
        
        return cnt;
    }
    
    int main(){
        int n;
        cin >> n;
        
        cout << func(n);
    }

    위 프로그램은 입력값 이하의 한수(각 자리가 등차수열을 이루는 수)의 개수를 구하는 프로그램이다.

     

    이 문제는 입력값의 최댓값이 1000이기 때문에

    100 미만의 수는 비교할 공차가 없거나 1개만 있어 단순히 카운팅만 해주었고,

    100 이상 1000 이하의 수가 들어오면 (100의 자릿수 - 10의 자릿수)와 (10의 자릿수 - 1의 자릿수)가 같은 경우, 즉 각 자리가 등차수열을 이루는 경우에만 카운팅을 해주었다.

     

    2. 반복문으로 자릿수 나누기

    주어진 수의 1의 자릿수를 출력하고, 진분수가 되기 전까지 10으로 계속 나누면서

    '1의 자릿수 출력 -> 10으로 나누기'를 반복하는 방법이다.

    #include <iostream>
    using namespace std;
    
    int main(){
        int a  = 1234;
        
        while( a >= 1 ){
            cout << a%10 << "\n";
            a /= 10;
        }
    }

     

    'Programming Language > C++' 카테고리의 다른 글

    [C++] EOF(End Of File) 처리하기  (0) 2021.11.23

    댓글

Designed by Tistory.