코딩테스트
정올 숫자근 c++
leeeehhjj
2024. 2. 8. 13:53
문제
각 자리수를 계속 더하여 한 자리 숫자를 만드는 것을 숫자근(Digit Root)이라고 한다. 예를 들어 정수 65,536 의 숫자근은 7이다, 그것은 6+5+5+3+6=25 이고 이를 다시 2+5=7 이기 때문이다.
n 개의 정수가 입력되면 숫자근이 가장 큰 값을 찾는 프로그램을 작성하시오.
입력
입력의 첫 줄에 정수의 개수 n(2≤n≤1,000)이 들어온다. 그 다음줄 부터 n개의 정수 m_i(1≤m_i≤1,000,000)가 한 줄에 한 개씩 들어온다.
출력
숫자근이 가장 큰 정수를 출력한다. 단, 가장큰 숫자근이 여러 개이면 그 중 가장 작은 수를 출력한다.
예제
login입력
5
213
61
153
95
753
logout출력
153
#include <iostream>
#include <algorithm>
using namespace std;
#define MAXN ((int)1e3)
int N;//정수개수
int A[MAXN + 10];//입력 정수
void InputData(){
cin >> N;
for (int i=0; i<N; i++){
cin >> A[i];
}
}
int main(){
int ans = -1;
InputData();//입력 받는 부분
//여기서부터 작성
sort(A,A+N);
int idx = 0;
for (int i=0; i<N; i++) {
int tmp = A[i];
int sum;
while (tmp >= 10)
{
sum = 0;
while (tmp > 0)
{
sum += tmp%10;
tmp /= 10;
}
tmp = sum;
}
if (ans < tmp) {
idx = i;
ans = tmp;
}
}
ans = A[idx];
cout << ans << endl;//출력하는 부분
return 0;
}