1~1000에서 각 숫자의 개수 구하기

예로 10 ~ 15 까지의 각 숫자의 개수를 구해보자

10 = 1, 0
11 = 1, 1
12 = 1, 2
13 = 1, 3
14 = 1, 4
15 = 1, 5

그러므로 이 경우의 답은 0:1개, 1:7개, 2:1개, 3:1개, 4:1개, 5:1개

+3 예시에서 1은 7개입니다. - 차우정, 2016/05/13 23:51 M D
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

282개의 풀이가 있습니다. 18 / 29 Page

public void t504() {
    TreeMap<String, Integer> map = new TreeMap<>();
    for (int inx = 1; inx <= 1000; inx++) {
        String[] strs = Integer.toString(inx).split("");
        for (String str : strs) {
            int cnt = 0;
            if (map.containsKey(str)) {
                cnt = map.get(str);
            }
            map.put(str, cnt + 1);
        }
    }
    for (Iterator<String> iter = map.keySet().iterator(); iter.hasNext();) {
        String key = iter.next();
        int val = map.get(key);
        System.out.println(Integer.parseInt(key) + ": " + val);
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
// C++

const int MAX_DATA = 10;

bool Func( int nMin, int nMax, int* paBuff )
{
    int nData   = nMin;

    while( nMin <= nMax )
    {
        nData   = nMin;

        while( nData != 0 )
        {
           ++( paBuff[ nData % MAX_DATA ] );

            nData   /= MAX_DATA;
        }

        ++nMin;
    }

    return true;
}

int main()
{
    int nMin  = 0;
    int nMax  = 0;

    cin >> nMin >> nMax;

    int anBuff[ MAX_DATA ] = { 0, };

    Func( nMin, nMax, anBuff );

    for( int x = 0 ; x < MAX_DATA ; ++x )
    {
        cout << x << " : " << anBuff[ x ] << "\n";
    }

    return 0;
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

javascript

let count = Array(10).fill().map((_,i) => {
    return {
        key : i,
        value : 0
    };
});

for(let i=1;i<=1000;i++){
    let num = i;
    while(num > 0){
        count[num%10].value += 1;
        num = parseInt(num/10);
    }
}

console.log(count);
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

include

int num[10] = { 0 };

int sival(int n) { if (n / 10 >= 1) { araboza(n % 10); return sival(n/10); } araboza(n); return n % 10; }

int araboza(int a) { switch (a) { case 0: num[0]++; break; case 1: num[1]++; break; case 2: num[2]++; break; case 3: num[3]++; break; case 4: num[4]++; break; case 5: num[5]++; break; case 6: num[6]++; break; case 7: num[7]++; break; case 8: num[8]++; break; case 9: num[9]++; break; }

return 0;

}

int main(void) { for (int i = 1; i <= 1000; i++) { sival(i); } for (int i = 0; i < 10; i++) { printf("%d = %d개\n", i, num[i]); }

return 0;

}

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
var result = new int[10];

            for(int i = 1; i <= 1000; i++)
            {
                int temp = i;

                while (temp != 0)
                {
                    result[temp % 10]++;
                    temp /= 10;
                }
            }

            for(int i = 0; i < 10; i++)
            {
                Console.WriteLine($"{i} : {result[i]}");
            }
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
#include <stdio.h>


void main()
{

    int arr2[10] = { 0, };

    int mok, nam, num1;
    printf("마지막 수 입력 : ");
    scanf_s("%d", &num1);

    for (int i = 0; i <= num1; i++)
    {
        mok = i / 10;
        nam = i % 10;

        arr2[nam] += 1;

        while (mok > 9)
        {
            mok = mok / 10;
            nam = mok % 10;
            arr2[nam] += 1;
        }

        if (mok > 0)
            arr2[mok] += 1;
    }

    printf("0부터 %d까지 \n", num1);
    for (int i = 0; i < 10; i++)
    {

        if(arr2[i] != 0)
        printf("%d : %d개\n", i, arr2[i]);
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

from collections import defaultdict

d = defaultdict(int) for n in range(1, 1001): for x in str(n): d[x] += 1

print(d)

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
#include <stdio.h>

void main()
{
    int NumCnt[10] = {0, };
    int TenNum = 1;
    int Ten = 10;
    int Cnt = 1;
    int Ans = 0;
    int Ans2 = 0;

    for ( int i = 1; i <= 1000; i++ )
    {
        Ans = i;
        Ans2 = i;
        if ( Ans % Ten == 0 )
        {
            Cnt++;
            Ten *= 10;
        }

        for ( int j = 1; j < Cnt; j++ )
            TenNum *= 10;

        for ( int j = 0; j < Cnt; j++ )
        {
            Ans = Ans / TenNum;
            NumCnt[Ans]++;
            Ans = Ans2 % TenNum;
            TenNum /= 10;
        }
        TenNum = 1;
    }
    for ( int i = 0; i < 10; i++ )
        printf("%d : %d\n", i, NumCnt[i]);
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
public static void main(String[] args) {
        int[] count = new int[10];
        int a,b;
        for(int i=1;i<=1000;i++){
            if(i<10){
                count[i%10]++;
            }
            else if(i<100){
                count[i/10]++;           //ex) 99 -> count[9]
                count[i%10]++;           //    99 -> count[9]
            }
            else if(i<1000){
                a=i;
                count[a/100]++;          // ex) 834 -> count[8]
                a%=100;                  //     834%100 = 34
                count[a/10]++;           // ex) 34 -> count[3]
                count[a%10]++;
            }
            else{
                a=i;
                count[a/1000]++;
                a%=1000;
                count[a/100]++;
                a%=100;                  
                count[a/10]++;         
                count[a%10]++;
            }
        }
        for(int i=0;i<10;i++){
            System.out.println(i+" : "+count[i]);
        }
    }
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
print [sum([int(y) for y in str(x)].count(z) for x in range(1,1001)) for z in range(10)]

Python 2.7.13

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

※ 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.


언어별 풀이 현황
전 체 x 282
python x 118
기 타 x 51
java x 63
javascript x 5
cpp x 34
ruby x 1
php x 2
go x 2
cs x 5
objectivec x 1