기타등등/알고리즘 기록

[C++] 자릿수의 합 & 숫자의 총 개수

CodeJB 2021. 6. 18. 17:15

//10번 문제
#include <iostream>
#include <stdio.h>
using namespace std;


int digit_sum(int x){
    int res = 0;
    //10을 나눈 나머지는 첫번째 자릿수의 값을 구하는 방법
    //그다음 10을 나눠서 다음 자릿수의 값을 구하도록함.
    while(x != 0){
        res += (x % 10);
        x = x / 10;
    }
    return res;
}

int main() {
    int N, x, sum, res ,max = -2147000000;
    
    cin >> N;
    
    for(int i = 0; i <N; i++){
        cin >> x;
        
        sum = digit_sum(x);
        if(sum > max){
            max = sum;
            res = x;
        }else if(sum == max){
            if(x > res){
                res = x;
                
            }
        }
    }
    cout << res;
}

//11번 문제
#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
    int N, tmp ,cnt = 0;
    
    cin >> N;
    for(int i = 1; i <= N; i++){
        tmp = i;
        while(tmp > 0){ // while문 활용을 잘 못한다...
            tmp = tmp / 10;
            cnt++;
        }
    }
    cout << cnt;
    return 0;
}

성찰

  • while문 활용을 너무 못한다...
  • for문에 익숙해져 있다 보니, while문을 잘 활용을 못해서 다른 방향으로만 생각하게 된다
  • 정해져있는 숫자부터 ~ 정해져있는 숫자까지 반복한다가 아니라
  • 특정 값에 변화를 줘서 특정 조건까지만 반복한다의 개념이 떠오른다면 while문을 활용해주자
  • 쉬운 것이지만 놓치기 쉽상이다