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
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

216개의 풀이가 있습니다. 17 / 22 Page

public class NumberCount {
    public static void main(String[] args) {
        int[] result = {0,0,0,0,0,0,0,0,0,0};
        for(int i=1; i<=1000; i++) {
            String s = String.valueOf(i);
            for(int j=0; j<s.length(); j++) {
                for(int k=0; k<10; k++) {
                    if(Integer.parseInt(s.substring(j, j+1)) == k)
                        result[k]++;
                }
            }
        }
        for(int i=0; i<10; i++) {
            System.out.println(i+":"+result[i]+"개");
        }
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

package saturdayjava;

public class sat13 { public static void main(String[] args) { int startInput = 1; int endInput = 1000;

    int[] num = new int[10];
    String len = endInput + "";

    for(int idx=startInput; idx<=endInput; idx++) {
        num[idx%10]++;

        // 밑의 if문 주석처리를 for문 하나로 처리
        for(int idx2=1; idx2<len.length(); idx2++) {
            if(idx >= (int)Math.pow(10, idx2)) {
                num[(idx/(int)(Math.pow(10, idx2))) % 10]++;
            }
        }

    }

    for(int idx=0; idx<10; idx++) {
        System.out.println(idx + " : " +  num[idx]);
    }
}

}

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

python ver 3.5.2

L=[0,0,0,0,0,0,0,0,0,0]
for k in range(1,1001):
    for r in str(k):
        L[int(r)-1]+=1
for a in range(10):
    print('{0}:{1}개'.format(a,L[a]))
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
$start = 10;
$end = 15;
$array = array();
for($num=$start;$num<=$end;$num++){
    $array = array_merge($array,str_split($num));
}
$num_acount = array_count_values($array);
ksort(array_count_values($array));
foreach($num_acount as $num => $count){
 echo  sprintf("%s:%s개",$num,$count);
 echo "\n";
}

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

num_str = [] count = [0 for i in range(0,10)]

for i in range(1,1001): num_str.append(str(i))

for i in range(0,1000): for j in num_str[i]: if j in str(range(0,10)): count[int(j)] += 1

for j in range(0,10): print "%s:%s개" %(j, count[j])

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
l=[0]*10
for i in range(1,1001):
    for c in str(i):l[int(c)]+=1
print(l)

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
public class NumCount {
    public static void main(String[] args) {
        int Answer[] = new int[10];
        for (int i=0; i<10; i++) {
            Answer[i] = 0;
        }
        for (int i=1; i<=1000; i++) {
            int j = i;
            while (j > 0) {
                int position = j%10;
                Answer[position]++;
                j = j / 10;
            }
        }
        for (int i=0; i<10; i++) {
            System.out.println(i + " : " + Answer[i] + "개");
        }
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
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);
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

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

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


언어별 풀이 현황
전 체 x 216
python x 89
java x 50
기 타 x 35
javascript x 3
ruby x 1
cpp x 31
php x 2
go x 2
cs x 2
objectivec x 1