[알고리즘]1 ~ 10,000의 숫자 중 8이 등장하는 횟수 구하기

jaemin·2020년 9월 19일
0

알고리즘

목록 보기
2/7
post-thumbnail

문제

1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가? 이를 구하는 함수를 완성하라.
단, 8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. 예를 들어 8808은 3, 8888은 4로 카운팅 해야 한다.
(hint) 문자열 중 n번째에 있는 문자 : str.charAt(n) or str[n]

function getCount8 () {
}
console.log(getCount8()); // 4000

풀이 과정 설계

1부터 10000까지의 숫자를 하나의 긴 문자열로 만들고 그 문자열을 for문으로 순회하면서 8의 개수를 찾는다.

풀이 과정

function getCount8 () {
  let str = '';
  let count = 0;
  for( let i = 0; i <= 10000; i++ ){
    str += i; // str 안에 1부터 10000까지의 모든 수를 담는다.
  }
  for( let i = 0; i < str.length; i++) {
    if( str[i] === '8') ++count; // str을 순회하면서 8이 있다면 count를 1씩 증가시킨다.
  }
  return count;
}
console.log(getCount8()); // 4000

다른 풀이

1000의 자리수가 8인 경우 : 8 X X X (10^3개)
100의 자리수가 8인 경우 : X 8 X X (10^3개)
10의 자리수가 8인 경우 : X X 8 X (10^3개)
1의 자리수가 8인 경우 : X X X 8 (10^3개)
10^3 * 4 = 4000개

profile
프론트엔드 개발자가 되기 위해 공부 중입니다.

1개의 댓글

comment-user-thumbnail
2020년 9월 20일

생각 못한 방법이네요😃😃

답글 달기