알고리즘 테스트 ⏲/백준 [백준] 알고리즘 1065. 한수 - [백준] 알고리즘 1065. 한수 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 예제 입력 110 예제 출력 99 예제 입력 1 예제 출력 1 예제 입력 210 예제 출력 105 예제 입력 1000 예제 출력 144 #include <iostream> #include <vector> using namespace std; int dgtSequence(int n) { if (n == 1000) return 0; vector<int> dgtArr; // n을 자리별로 나누어 넣을 벡터 int dgt; while (n != 0) { dgt = n % 10; dgtArr.push_back(dgt); n /= 10; } int k = 0; int diff1, diff2 = 0; if (dgtArr.size() == 3) { // 세 자릿수인 경우 diff1 = dgtArr[0] - dgtArr[1]; diff2 = dgtArr[1] - dgtArr[2]; if (diff1 == diff2) return 1; else return 0; } else // 세 자릿수 미만인 경우 return 1; } 풀이 이 문제도 로직은 매우 쉽습니다. 우선 1부터 99까지는 전부 항이 1개 혹은 2개이기 때문에 전부 한수입니다. 그래서 99개가 나오는 것이죠. 100부터 999까지는 저는 단순하게 index 이용해 (백의 자리 - 십의 자리) 가 (십의 자리 - 일의 자리) 와 동일한지 여부로 카운트 했습니다. 1000은 한수가 아니므로 바로 리턴합니다. 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기yjglab 저작자표시 Contents 당신이 좋아할만한 콘텐츠 [백준 C++] 알고리즘 10250. ACM 호텔 2021.08.30 [백준 C++] 알고리즘 2869. 달팽이는 올라가고 싶다. 2021.08.30 [백준] 알고리즘 4673. 셀프 넘버 2021.08.13 [백준] 알고리즘 1948. 임계경로 2021.07.23 댓글 0 + 이전 댓글 더보기