알고리즘
코드업 행복한 수(c++)
leeeehhjj
2024. 2. 17. 13:43
https://codeup.kr/problem.php?id=4032&rid=
행복한 수
1. 하나의 정수 n이 입력된다. (1≤n≤1,000)
codeup.kr
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
#define MAXN ((int)1e3)
int N;
vector<int> v;
void InputData(){
cin >> N;
}
int sum(int n) {
int tmp = 0;
while (n > 0)
{
tmp += pow(n % 10, 2);
n /= 10;
}
return tmp;
}
bool isHappy(int n) {
v.clear();
v.push_back(n);
while (true)
{
n = sum(n);
if (n == 1) return true;
if (find(v.begin(), v.end(), n) != v.end()) {
if (n != 1) {
return false;
}
}
v.push_back(n);
}
}
int solve(int n) {
while (n > 0)
{
if (isHappy(n)) return n;
n--;
}
return 1;
}
int main(){
int ans = -1;
InputData();//입력받는 부분
//여기서부터 작성
ans = solve(N);
cout << ans << endl;//출력하는 부분
return 0;
}