-
[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