어려운.. 함수 마지막 문제답게 이것도 푸는데만 하루종일 걸렸다.
<한수구하기>
한수 = 각 자릿수가 등차수열을 이루는 수
여기서 한자릿수, 두자릿수까지는 등차수열을 판단할 척도가 없어 그냥 한수라고 한댄다.
난 그것도 모르고 일단 생각한 알고리즘 대로 코드를 작성했다. 다음 코드는 내가 처음 생각했던 알고리즘.
함수 2개 만들어서 하나는 메인, 하나는 한수까지 구해내는 함수인 solution();.
수 n을 입력받으면 메인에서 1부터 n까지 반복돌리고, solution에서 각 자릿수를 빼내는 연산 후 배열에 집어넣었다. 그래서 배열에는
arr[0] = 일의자리수
arr [1] = 십의자리수
arr[2]= 백의 자리수 이렇게 할당하고, 등차수열 식인 Ak = a1+(k-1)d 를 배열식으로 풀어내 if 함수에 넣었음. for문 돌려 배열 하나하나 d가 일치하는 지에 대해 검수했었다. 이 알고리즘도 맞는 것 같지만 내가 만든 raw한 코드라 그런지 다시 고쳐서 저지받고싶진 않았다. 그래서 걍 블로그에 올림.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include<iostream> using namespace std;
int solution(int n){ int count = 98; int m = 0; int arr[6] = {}; int diff =0; for(int i=0;i<6;i++){ arr[i] = n%10; n = n/10; if(n < 10){ arr[i+1] = n; m = i+1; break; } } for(int k=0;k< 6;k++){ if(arr[k+2]- arr[k+1] == arr[k+1]-arr[k]){ count++; } } return count; } int main(){ int a; int num1 = 0; scanf("%d", &a); for(int i=100;i<a;i++){ num1 = solution(i+1); } printf("%d",num1); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include<iostream> using namespace std;
int solution(int n){ int count = 98; int m = 0; int arr[6] = {}; int diff =0; for(int i=0;i<6;i++){ arr[i] = n%10; n = n/10; if(n < 10){ arr[i+1] = n; m = i+1; break; } } for(int k=0;k< 6;k++){ if(arr[k+2]- arr[k+1] == arr[k+1]-arr[k]){ count++; } } return count; } int main(){ int a; int num1 = 0; scanf("%d", &a); for(int i=100;i<a;i++){ num1 = solution(i+1); } printf("%d",num1); }
|
자꾸 오른쪽걸 왼쪽에 할당한다는 것을 까먹고 b = s;이라 해서 자꾸 틀렸습니다 나와서 짜증났음 ..
결국엔 맞았습니다 받고.. 블로그 쓰고 끗.
어짜피.. 오늘은 쉬엄쉬엄 하려고 했엇다.. 갓생을 살지 않으려 다짐했었다. (김효주 증인)
덧글