-
정올 숫자근 c++코딩테스트 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; }
'코딩테스트' 카테고리의 다른 글
백준 빙고(c++) (0) 2024.02.17 백준 싸이클 c++ (1) 2024.02.08 정올 폭탄 돌리기 c++ (0) 2024.02.08 특정 수 제외하기(9진법) (0) 2024.01.23 프로그래머스 숫자의 표현(자바) (2) 2023.06.07