ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정올 숫자근 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
Designed by Tistory.