티스토리 뷰
1. 반복수열(2331번)
(내 소스)
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
vector<int> d;
bool check[236197];
int p;
int next(int a) {
int ans = 0;
while (a > 0) {
ans += pow(a % 10, p);
a /= 10;
}
return ans;
}
// 수열을 구해나가다가, 반복된 값이 나오면 해당 값을 return
int go(int x) {
if (check[x] == true) {
return x;
}
check[x] = true;
d.push_back(x);
go(next(x));
}
int main(void) {
int a;
cin >> a >> p;
int result = go(a);
int cnt = 0;
for (auto &temp : d) {
if (temp == result) {
break;
}
cnt++;
}
cout << cnt << endl;
return 0;
}
(정답 소스)
#include <iostream>
#include <cmath>
using namespace std;
int check[1000000];
int p;
int next(int a){
int ans = 0;
while(a>0){
ans+=pow(a%10,p);
a/=10;
}
return ans;
}
int length(int a, int cnt){
if(check[a]!=0){
return check[a]-1;
}
check[a] = cnt;
int b = next(a);
return length(b, cnt+1);
}
int main(void){
int a;
cin >> a >> p;
cout << length(a,1) << '\n';
return 0;
}
'백준 알고리즘 기초 강좌' 카테고리의 다른 글
7장 트리 - (1) 트리의 개념 및 트리의 표현 (0) | 2017.10.21 |
---|---|
6장 그래프 - (3) 그래프 탐색 문제 5 (0) | 2017.10.20 |
6장 그래프 - (3) 그래프 탐색 문제 3 - 순열 사이클(10451번) (0) | 2017.10.18 |
6장 그래프 - (3) 그래프 탐색 문제 2 - 이분 그래프(1707번) (0) | 2017.10.18 |
6장 그래프 - (3) 그래프 탐색 문제 1 - 연결 요소(11724번) (0) | 2017.10.18 |